I am considering using arduino for data acquisition for 2 upcoming projects.
In the first project, I wish to have the arduino monitor analog voltages from a number (possibly 8) of RTD devices connected in wheatbridge fashion which will be monitoring the temperature of MOSFET cases in my circuit, and have them displayed on my PC screen like a flowing chart in real time. I'm confident that I can do the the temperature linearizing and scaling in the Arduino, and have the arduino output real temperatures in engineering units serially, so All I really need is a software that I can have accept these numbers and plot them on a chart (and save the file, would be really nice)
For my second project I am making a DIY dynomometer for testing small engines and motors. I will have a plused input to the arduino representing RPM, and an analog voltage input from a load cell representing torque. I beleive I can have the arduino turn the pulses into an RPM number and the voltage into a ftLbs number. I would then have the Arduino multiply the torque X ftLbs to obtain a HP number, and transmit all 3 of these values serially to the PC. Again, all I need is a software that will allow me to display these numbers on a flowing graph in real time.
So my questions are:
- Is there any forseeable reason why the arduino cannot do what I am expecting, and
- what kind of sofware can I use to display these graphs, and will I be able to save the data?
I read the book "Getting started with Arduino" some months back wherein the author set up several programs where Arduino communicated with a program written in Processing; I beleive one of them even had a rudimentary flowing graph, but if I remember correctly it did not look like it would be sufficient for my purposes now; I really would like to avoid having to learn how to write a program for this from the ground up if possible.
Oh, and it would be nice if the software were free (or as close to free as possible). I know, I know, but hey, this is just for tinkering; I'm on a budget.
When it comes to writing software to display graphs, I believe that using Visual Studio (if you use windows) is the simplest way. I remember doing this quite easily in Visual Basic some years back.
You can use the express version for free and it should be enough for what you want.
As far as reading analog data and sending it to the computer, I think that you may get better results by sending the reading and converting to engineering units in the computer. Of course, this would take the objective from Arduino, but it would let you get higher performance on the readings... don't misinterpret though... you wouldn't get a much higher performance, it would just be a bit better.
If you want to do some logging, sending the values in ASCII serially will also slow the process down. So you may want to have a look at different transmission possibilities.
bubulindo:
When it comes to writing software to display graphs, I believe that using Visual Studio (if you use windows) is the simplest way. I remember doing this quite easily in Visual Basic some years back.
You can use the express version for free and it should be enough for what you want.
Ok, I will look into that. I do have a little bit of experience with Visual Basic. However, I was hoping to find something already suited to the purpose. Learning to write a program that accomplishes what I want would take a long time and would take away from my project. But, if it has to be, then so be it.
bubulindo:
As far as reading analog data and sending it to the computer, I think that you may get better results by sending the reading and converting to engineering units in the computer. Of course, this would take the objective from Arduino, but it would let you get higher performance on the readings... don't misinterpret though... you wouldn't get a much higher performance, it would just be a bit better.
Why is that? because the arduino has to do a calculation every cycle and before sending that data out I assume? How much do you think it would slow me down doing the calculation in arduino? I only need (arbitrary guess) maybe 5 samples/sec. do you think The arduino would have a problem with that? It's just that my programming skills are weak and I feel comfortable programming in Arduino.
bubulindo:
If you want to do some logging, sending the values in ASCII serially will also slow the process down. So you may want to have a look at different transmission possibilities.
What kind of possibilities?
I found this:
http://www.radiosky.com/skypipeishere.html
which is supposed to read signals through the sound card of a PC but I'm not at all sure how it works, or if it would work with a laptop. It says that with an ADC such as MAX186, it can read analog signals, so I assume it could read a digital signal from Arduino. BUT I downloaded the software and cannot make any sense of it; looks to be tailored specifically to audio signals, despite being advertised for ANY signal. And also I don't see a way to set the engineering units.
strantor:
Ok, I will look into that. I do have a little bit of experience with Visual Basic. However, I was hoping to find something already suited to the purpose. Learning to write a program that accomplishes what I want would take a long time and would take away from my project. But, if it has to be, then so be it.
I think it wasn't that hard. A dataset and a graph object I think. But times have changed since I used Visual Basic.
strantor:
Why is that? because the arduino has to do a calculation every cycle and before sending that data out I assume? How much do you think it would slow me down doing the calculation in arduino? I only need (arbitrary guess) maybe 5 samples/sec. do you think The arduino would have a problem with that? It's just that my programming skills are weak and I feel comfortable programming in Arduino.
Because:
- a float has 4 bytes, an int has 2.
- floating point calculations take up more space in program memory and slow down the CPU.
- If you need to adjust calculate engineering units that involve exponentials, it will take even longer.
- Converting floating point values to string takes longer than integers.
strantor:
What kind of possibilities?
I found this:
http://www.radiosky.com/skypipeishere.html
which is supposed to read signals through the sound card of a PC but I'm not at all sure how it works, or if it would work with a laptop. It says that with an ADC such as MAX186, it can read analog signals, so I assume it could read a digital signal from Arduino. BUT I downloaded the software and cannot make any sense of it; looks to be tailored specifically to audio signals, despite being advertised for ANY signal. And also I don't see a way to set the engineering units.
Instead of sending data in ASCII, you can send in the format that they are in. So 3,1456 would take up 4 bytes instead of 6.
It wouldn't look nice in the terminal, but it would be far faster to transmit and also for the computer to use them as it wouldn't have to convert from string to floating point format.
The code you're going to write in Arduino to convert from integer to floating point is going to be pretty much the same that you need to write in the computer.
But, if the main goal is to use and learn Arduino, then you should do as much as possible in it.