ADS1256 - Full demonstration

Поділитися
Вставка
  • Опубліковано 2 лис 2024

КОМЕНТАРІ • 82

  • @diyinstinct4502
    @diyinstinct4502 2 роки тому +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  2 роки тому

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

    • @diyinstinct4502
      @diyinstinct4502 2 роки тому +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  2 роки тому

      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.

  • @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.

  • @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.

  • @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!

  • @cornjoe473
    @cornjoe473 2 роки тому

    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  2 роки тому

      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.

  • @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

  • @neilanthony7596
    @neilanthony7596 5 років тому +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  5 років тому

      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 5 років тому +1

      @@CuriousScientist Fantastic!!

  • @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.

  • @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?
      ua-cam.com/video/6lJ9_HofsZo/v-deo.html

  • @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

  • @sagarm4851
    @sagarm4851 3 роки тому

    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  3 роки тому

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

    • @sagarm4851
      @sagarm4851 3 роки тому

      @@CuriousScientist ok thank you so much for your reply

  • @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!

  • @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! ;)

  • @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.

  • @acrazbahrum3412
    @acrazbahrum3412 5 років тому

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

    • @CuriousScientist
      @CuriousScientist  5 років тому

      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.

  • @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 5 років тому

      where i can find the start pin?

    • @CuriousScientist
      @CuriousScientist  5 років тому +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 5 років тому +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  5 років тому

      @@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.

  • @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.

  • @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.

  • @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 2 роки тому

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

    • @CuriousScientist
      @CuriousScientist  2 роки тому +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 2 роки тому

      @@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  2 роки тому

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