ADS1256 - Full demonstration

Поделиться
HTML-код
  • Опубликовано: 24 июл 2024
  • UPDATE:
    Since this video, I created my own custom library for the ADS1256. Please visit my website for a the library files an for a very detailed documentation:
    curiousscientist.tech/ads1256...
    In this video I will show you how to use the ADS1256 ADC board with Arduino, how to write a code and some extra things. If you follow the tutorial, you will be able to build and operate a very good voltage logger.
    I took the following library as a starting point:
    github.com/kaskavalci/ADS12xx...
    I kept the libraries and I only wrote the Arduino project file myself to taylor the software to my needs.
    I recommend you to go through the video and type the code by hand, because then you can understand it. Especially the registers. However, if you are lazy, you can find the code here:
    curiousscientist.tech/blog/ad...
    If you have downloaded the code and found my video useful, please subscribe to help my channel grow!
    Another important link is the datasheet of the ADS1256 to understand the registers:
    www.ti.com/lit/ds/symlink/ads1...
    Wiring:
    A13 - SCLK
    A12 - DOUT
    A11 - DIN
    A10 - CS
    A9 - Not connected
    A8 - Reset
    A2 - DRDY
    ----------------------------------------------------------------------------------------------------------
    Support me by buying the circuits using these affiliate links:
    curiousscientist.tech/tools

Комментарии • 82

  • @diyinstinct4502
    @diyinstinct4502 Год назад +1

    Thanks for sharing. I also tried ADS1256 module for sometime and made DVM with this. And can measure precise 10uV's level. I invented some offset/gain calibraion technic by myself.

    • @CuriousScientist
      @CuriousScientist  Год назад

      You're welcome! By the way the ADS1256 has its own internal gain and offset compensation, there's no need for invention. ;)

    • @diyinstinct4502
      @diyinstinct4502 Год назад +1

      @@CuriousScientist Yes, when tried selfcal it calibrate somewhat but not perfect. so when u measure 10uv, u can see voltage up and down like 17uv or 20uv etc. Did you measure 10uv precisely? That's the matter.

    • @CuriousScientist
      @CuriousScientist  Год назад

      I haven't tried to measure stuff with that precision yet. So yeah, it might be different. However, you should keep in mind that it is not enough to just run the selfcal! Sysocal and sysgcal are the real deals where you need to actively interact with the circuit in order to perform a proper calibration.

  • @jackiezhou9778
    @jackiezhou9778 4 года назад

    Thank you~ It's very helpful

    • @CuriousScientist
      @CuriousScientist  4 года назад

      Hi Jackie! I am glad that you found the video useful! Don't forget to subscribe, so you will see my future videos. I will release more videos with this ADC in the future.

    • @jackiezhou9778
      @jackiezhou9778 4 года назад +1

      @@CuriousScientist Sure! Really enjoy your video.

  • @martinvollderpro
    @martinvollderpro 4 года назад +1

    great video

  • @ie3562
    @ie3562 4 года назад

    Hello
    Working on a project for distance measurement . So need to convert o/p of sensor (4-20mA) to digital counts (numerical values)

    • @CuriousScientist
      @CuriousScientist  4 года назад

      This can easily do it. You just have to "convert" the current to voltage by some precisely known resistors.

    • @mohinderkaur6671
      @mohinderkaur6671 3 года назад +1

      opamp - current to voltage to ADC

  • @mightyaccelerator
    @mightyaccelerator Год назад +2

    HI CS, really nice project. I have a question regarding this project. Is it possible to use 2 ADS1256 with 16-channel in total in this project?

    • @CuriousScientist
      @CuriousScientist  Год назад

      Hi and thanks! Since it uses the regular SPI bus, you can use multiple devices, of course. But check my most recent ADS1256 videos, because this video is very old. I designed my own circuit and wrote my own Arduino-compatible library for the ADS1256.

  • @vietthanh2774
    @vietthanh2774 4 года назад +1

    Could you help me how to read 8 ADC channel in one time?, thank you so much.

    • @CuriousScientist
      @CuriousScientist  4 года назад

      Hi! I haven't checked the whole video but if I remember, I explained that if you read all the 8 channels after each other, then you would get them so quickly at low sampling frequencies that they look like they arrived at the same time.
      I talked about the registers as well. All you have to do is to read one channel (e.g. AIN0+com), store the value, then read the next until the last one. When you have all variables, combine them into a single string and send it over to your computer via serial. You can also send them one by one, separate them by tabs and after the last one, send a line break. But I dont advise this, because when we need speed, we want to avoid "serial.print" as much as possible. I made the code publicly available, it is not a big work to modify it.
      If you have any questions, let me know. And please, don't forget to subscribe! ;)

  • @acrazbahrum3412
    @acrazbahrum3412 4 года назад

    could you send the link for a app in the last video? thankyou

    • @CuriousScientist
      @CuriousScientist  4 года назад

      Hi! If you're talking about the Windows software which draws the chart and communicates with the arduino, then that is not public. I can sell it to you.

  • @neilanthony7596
    @neilanthony7596 4 года назад +1

    Do you need to be connected to a PC to run this, or could it run autonomously, or could it run from an android phone, passing data to the phone via bluetooth. many thanks, n

    • @CuriousScientist
      @CuriousScientist  4 года назад

      Hi! It is absolutely possible to control it independently from a PC. All you have to do is to use something else instead of the switch-case in the code. For instance, you can use buttons with attachInterrupt() to start and stop sampling. I don't know anything about bluetooth and Arduino but as long as you use the code and trigger the different parts with something (serial command, button, bluetooth...etc) you are good to go. Maybe you can use if-else instead of switch-case as well. I guess, you have the same syntax for the bluetooth as for the serial connection with the PC, so it should not be so difficult.

    • @neilanthony7596
      @neilanthony7596 4 года назад +1

      @@CuriousScientist Fantastic!!

  • @pawbre0028
    @pawbre0028 4 года назад +1

    the diff between voltage on multimiter and ADS in my opinion is caused by not compensated wires in my opinion. However I have question. Have you tried put some higher voltage on AI pin with turned on buffer? The impedance is around 80MOhms so I wonder is it safe to put around 9-12VDC on the input of the circuit.

    • @CuriousScientist
      @CuriousScientist  4 года назад

      Hi! I did some further research on this device, and I have discovered that the two devices show the exact same voltage, if I have the input buffer _enabled_ on the ADS1256. The problem is that the voltage range that you can measure properly drops down to ~3 V with the enabled input buffer. This also answers your question a bit: No, I haven't tried measuring higher than 5 V voltages. If I wanted to measure larger voltages, I would probably use a voltage divider or something which brings the voltage down between 0-3 V. The 24 bit (23 in reality) is a huge scale of numbers, so if you have a relatively noise-free, stable signal, you can measure very large voltages as compared to Vref (+2.5 V) if you can drop the voltage down.

    • @pawbre0028
      @pawbre0028 4 года назад +1

      @@CuriousScientist thanks for fast respond! I also thought about divider. I was wondering about common gnd between ADS and measuring object. In your video you took circuit voltage from external power supply and arduino+ads had voltage from PC? Have you tied somewhere GND? It's curious coz imo maybe ADS is comparing input voltage to something and I'm wonder if it's nessesary to tie them up somewhere, It should be much more easier for my project. BTW great tutorial!

    • @CuriousScientist
      @CuriousScientist  4 года назад

      Thanks. The whole system was at the same ground potential. But yes, you can play with a different ground too. If you use the ADS1256 in single-channel mode (if I remember correctly), you can do the exact same thing that you described. Please check the datasheet, they write about this. I don't exactly remember the details, and I don't want to say something which is not correct. But I remember that you can do something about a different ground/reference point.

    • @pawbre0028
      @pawbre0028 4 года назад +1

      btw have you got problem with writing into register 0x01? I checked library and it's problem with MUX probably

    • @CuriousScientist
      @CuriousScientist  4 года назад

      Hi! No issues at all for me. I bought a cheap logic analyzer, took my time and wrote my own library for the ADS1256. It takes a little time to understand how the SPI protocol works, but once you got it, you can easily understand the datasheet (timings are the key) and write your own code. Check my more recent ADS1256 series, I basically explain everything by going deeper into the tiny details as well.

  • @sagarm4851
    @sagarm4851 2 года назад

    hello, i am using ADS1256 with RPI CM4 and i can able to read adc value from ch0 for differential. can you please tel me how to read for remaining channels ch1,ch2&ch3 and hardware connection .

    • @CuriousScientist
      @CuriousScientist  2 года назад

      Hi! Check my other videos related to this circuit. I tell everything in very details.

    • @sagarm4851
      @sagarm4851 2 года назад

      @@CuriousScientist ok thank you so much for your reply

  • @riccardorea2415
    @riccardorea2415 3 года назад

    Hi, really nice project. Were you able to achieve the maximum declare SPS using Arduino UNO?

    • @CuriousScientist
      @CuriousScientist  3 года назад

      Thanks! I haven't used this thing with Uno for a while, but with an STM32 bluepill, I could get 27 ksps. I guess that the missing speed is just due to my poor coding skills.

    • @riccardorea2415
      @riccardorea2415 3 года назад

      @@CuriousScientist Thanks for replying so quickly :). I had more or less the same problem with an UNO and a different AD converter (AD7124) and for that I was planning to switch from Arduino toward a Nucleo board (STM32 based).
      So with the Bluepill are you using the same IDE of Arduino or relying on another IDE? Again, nice projects!

    • @CuriousScientist
      @CuriousScientist  3 года назад

      I am using the regular arduino ide with the stm32duino framework. It works well for my kind of projects. I also tested with teensy 4.0, but I still had speed issues and couldn't reach 30ksps.

  • @zereftss
    @zereftss Год назад

    Hi, If I want to connect this ADS1256 with some sensors that have an analog output, should this code works? Or I have to modify the code to read the analog output first? Thank you

    • @CuriousScientist
      @CuriousScientist  Год назад

      Hi! Check my new library that I wrote for the ADS1256. It is more user-friendly.
      Analog output means voltage, so as long as you're within the range, you can connect it.

    • @zereftss
      @zereftss Год назад

      @@CuriousScientist Hi, I have checked your lastest library for the ADS1256 and the code works so well but I haven't test it with some measurement. I want to test it with connecting my analog sensors that have my own code on arduino, it have output value that connected to analog pins (on arduino) so I have to write analogread on my code to get the output value (without ADS1256). So if I want to connect sensor output to ADS1256 channels, should I write my previous code on your ADS1256 code library? Or it works without the analog sensor's code?

    • @CuriousScientist
      @CuriousScientist  Год назад

      You want to read the ADS1256 and not the ADC on the microcontroller, so the answer is quite straightforward. 😉 Just use my code, it is extremely well documented.

    • @zereftss
      @zereftss Год назад

      @@CuriousScientist Ok Thank you so much sir!

  • @jui-tinglee150
    @jui-tinglee150 3 года назад

    Hi, i follow your video and use your program to setup my arduino and ads 1256. when i send "R", the serial monitor send write to register 0x1 failed. what happen?

    • @CuriousScientist
      @CuriousScientist  3 года назад

      Seems like that the arduino cannot communicate with the ADS1256. Check my more recent videos, I wrote a much-much better code since this video.

    • @jui-tinglee150
      @jui-tinglee150 3 года назад

      @@CuriousScientist which one video, thank you.

    • @CuriousScientist
      @CuriousScientist  3 года назад

      Don't you know how to use the search function?
      ruclips.net/video/6lJ9_HofsZo/видео.html

  • @Taran72
    @Taran72 4 года назад +1

    How can I record the data? can I use this with an SD card module?

    • @CuriousScientist
      @CuriousScientist  4 года назад +1

      Hi! I usually transfer the data to the computer and then save it into a text file. You can also save it to an SD card. Actually, I have tutorials for everything mentionedabove. Check my other videos.

    • @Taran72
      @Taran72 4 года назад +1

      @@CuriousScientist , wow. Thank you so.much. I will check your other videos.

    • @CuriousScientist
      @CuriousScientist  4 года назад

      @@Taran72 Great, feel free to ask, if you get stuck! There is a tutorial on Arduino-Computer communication, data visualization and also on saving data of sensors to a SD card. These pretty much cover your questions. In the near future I will upload some more ADS1256 videos, and also some more tutorials on serial communication..etc. Subscribe, if you haven't yet, so you'll not miss these videos. Cheers!

  • @jrbroggio
    @jrbroggio 5 лет назад

    Good morning, could you please send me the full wiring scheme? I'm unable to reproduce the experiment, thank you very much.

    • @CuriousScientist
      @CuriousScientist  5 лет назад

      Hi!
      The wiring is in the source code of the Arduino software. It is shown in the video and it is also available in the pastebin website (see description). You basically need to connect 3 data cables plus the +5 V and GND.

    • @acrazbahrum3412
      @acrazbahrum3412 4 года назад

      where i can find the start pin?

    • @CuriousScientist
      @CuriousScientist  4 года назад +1

      @@acrazbahrum3412 Hi! I have updated the description of the video where you can see the exact wiring I used in this video. It should work with the code I demonstrate.

    • @acrazbahrum3412
      @acrazbahrum3412 4 года назад +1

      @@CuriousScientist hi. i am using your code and wiring as your send. but serial monitor send write to register 0x1 failed. any suggestion? thankyou i confuse with this problem

    • @CuriousScientist
      @CuriousScientist  4 года назад

      @@acrazbahrum3412 Describe your issue better. I am not a magician, so I cannot guess what are you doing and when do you get the error.

  • @cornjoe473
    @cornjoe473 Год назад

    Hello! Why after I upload the program, the serial port monitor shows these:Previous val 31
    Write to Register 0x0 failed!
    Previous val 1
    Previous val 20
    Previous val F0
    Write to Register 0x3 failed!
    Previous val E0
    Write to Register 0x4 failed!
    Request your answers,thanks!

    • @CuriousScientist
      @CuriousScientist  Год назад

      Hi! It seems that the Arduino cannot communicate with the ads1256. Probably check the wiring. But this code is also an old code. Check my channel and website because I made a custom library for the ads1256. That will work.

  • @wisnuprayudha9348
    @wisnuprayudha9348 4 года назад

    When i try it in my board, It doesn't work with the code you demonstrate. Can you help me ?

    • @wisnuprayudha9348
      @wisnuprayudha9348 4 года назад

      I used ADS1256 Board with built in connectors (black)

    • @CuriousScientist
      @CuriousScientist  4 года назад

      Don't spam the same question under all of the videos. As you can see, I read the comments and answer all of them.

  • @eduardoguedes1233
    @eduardoguedes1233 4 года назад +1

    could you do a schematic of conections pls? i am little lost

    • @CuriousScientist
      @CuriousScientist  4 года назад

      Read the description, I put there the connections.

    • @eduardoguedes1233
      @eduardoguedes1233 4 года назад

      @@CuriousScientist I saw it, I wanted to know about the library, not being able to access it

    • @CuriousScientist
      @CuriousScientist  4 года назад

      But what is not clear? I have like 10 videos talking about this circuit.

  • @andri5071
    @andri5071 3 года назад

    how can I measure the maximum resolution this ADC can have?

    • @CuriousScientist
      @CuriousScientist  3 года назад

      Sorry but your question does not really make sense. This is a 24-bit ADC, there is nothing to measure on its resolution. You can have a max input voltage 2xVREF which is usually 5 V. If you turn on the buffer, this becomes roughly 3 V, it depends on your AVDD voltage.

    • @andri5071
      @andri5071 3 года назад +1

      @@CuriousScientist I agree, the question was bad formulated. What I wanted to know is if you know a method to measure the noise in your system. Because the 24 bits are not useful if there is noise a lot bigger than 1 uV

    • @CuriousScientist
      @CuriousScientist  3 года назад +1

      Now I understand. I honestly don't know how to measure the noise, but the datasheet lists the number of useful bits for each settings. If you start using some "funny settings", the useful bits can drop to 20 or even 19 if I remember correctly. But yeah, please read the datasheet. With some time invested in it, you can do anything. Also, check my most recent ADS1256 video where I published a fully working code for this device and I explain the whole code line by line.

    • @andri5071
      @andri5071 3 года назад +1

      @@CuriousScientist Thanks, I'll check it out!

    • @paularnold2651
      @paularnold2651 3 года назад +1

      @@andri5071 I've used a piece of software called "Megunolink" with the Arduino to firstly measure raw data (noise included) and then applied various filters and superimposed one output on top of the other (export the .csv files). This was on a series of carbon nanotube/epoxy sensors. It might suit what you want.

  • @jui-tinglee150
    @jui-tinglee150 3 года назад

    Previous val 30
    Write to Register 0x0 failed!
    Previous val 1
    Previous val 20
    Previous val F0
    Write to Register 0x3 failed!
    Previous val E0
    Write to Register 0x4 failed!
    when i open the serial monitor.

    • @CuriousScientist
      @CuriousScientist  7 месяцев назад

      Probably your connections are not correct.

  • @wisnuprayudha9348
    @wisnuprayudha9348 4 года назад +1

    Hi, Do you sell the software ?

    • @CuriousScientist
      @CuriousScientist  4 года назад

      Hi! Not yet, but I am planning to somehow monetize the data logger and visualizer that I wrote for windows. At this moment, I don't want to sell it because I want to add some features and I want to make it more foolproof.

    • @wisnuprayudha9348
      @wisnuprayudha9348 4 года назад +1

      @@CuriousScientist Ok, thank you

    • @wisnuprayudha9348
      @wisnuprayudha9348 4 года назад

      @@CuriousScientist can you teach me how to make a code for measurement time and sample rate ?

    • @CuriousScientist
      @CuriousScientist  4 года назад +1

      @@wisnuprayudha9348 I have 8 videos for this circuit, and I explain everything from the deep bit-banging to the casual explanation of the circuit's working principles. Watch my videos, and you will get the answers to your questions. Don't forget to subscribe and share my channel! Cheers!

  • @payamreisi5591
    @payamreisi5591 Год назад

    Hi
    Manyyyy mistakes!
    1mv noise 🙄
    100mv at least offset? 😳

    • @CuriousScientist
      @CuriousScientist  Год назад +1

      Make it better. :) Also it is an old video, I made a much better library since and developed my own circuit too.

    • @payamreisi5591
      @payamreisi5591 Год назад

      @@CuriousScientist i need 10uv resolution adc in one of my project. Becuase i dont want high sample rate so its better use slower adc with better noise performance and pw supply, pcb, sheilding are critical for such high resolution.
      I will do it 😁and share with u 🌷🌷🌷

    • @CuriousScientist
      @CuriousScientist  Год назад

      If you don't need speed just use an Ltc2400. It is one of the best ADCs out there.