NEW: Learning electronics? Ask your questions on the new Electronics Questions & Answers site hosted by CircuitLab.
Microcontroller Programming » Tempsensor Project
January 14, 2011 by tomroth |
I've had the tempsensor project sitting on my desk and running off of the usb port for about a week now. Works great. I was looking at the code and the last line says it is for writing a message to the serial port. Is that to display the temperature on the PC? If so, do I need to write my own app or has someone already written one, and if so, where can I get it from? If no app has been written, any suggestions on going about doing it? Thanks! Tom |
---|---|
January 14, 2011 by tsaavik |
Start a terminal program (Hyperterminal, Putty, Realterm, etc) and point it at your Nerdkit's emulated comport. If you see gobbledygook, make sure to set the baud rate to 115200 (8N1) and you should see the temperature output scrolling by like crazy. |
January 14, 2011 by tomroth |
Thanks! Works great. |
January 14, 2011 by Ralphxyz |
And then you can take some of the Python code from Tutorials and graph the output. I think it was the Scale (strain gage) project that output a graph on the pc. Of course you would need to install Python and start to learn it's syntax. Ralph |
January 14, 2011 by tomroth |
I just wrote a Visual Basic 2008 program that grabs the information and displays it in a windows form. Super simple and short. If anybody is interested I can give you the code. Tom |
January 14, 2011 by Rick_S |
I'd love the code, will it run in vb express 2010? I've been curious of how to use the serial port in VB. I haven't messed with VB for decades and It's totally foreign to me now. Rick |
January 14, 2011 by Rick_S |
I'd love the code, will it run in vb express 2010? I've been curious of how to use the serial port in VB. I haven't messed with VB for decades and It's totally foreign to me now. Rick |
January 14, 2011 by Rick_S |
Sorry for the double post,... not exactly sure how that happened :D |
January 14, 2011 by tomroth |
It should run just fine on 2010. It may do a conversion to 2010, but there should be no problem. A couple of notes: 1) Build a form with a lable named Display_Temp and add a timer named tmrDelay. 2) I manually entered my com port number instead of discovering it. Just change the code to match your com port number. 3) I commented out the line with lblParse in it. I am playing with parsing the number out of the string and converting it to a number type variable for another project I am working on. 4) Let me know if you have any other questions or issues! Tom
|
January 15, 2011 by Rick_S |
It worked well. I had to add a button named btnEnd, to the form and name the form Temperature. Then after that, it fired right up and was displaying the temperature. Thanks for the code, I appreciate it. Rick |
January 15, 2011 by tomroth |
Yeah, I thought about that button this morning. Sorry about that. Tom |
January 15, 2011 by SirHobbes3 |
I'm doing the tempsensor project and i need some help. Log: From Windows Command Prompt on Saturday, January 15, 2011 at 4:25pm This is what shows up: C:Users*your username here*DownloadsCode-Nerkits UsbCodetempsensor_edu> Then i type in: C:Users*your username here*DownloadsCode-Nerkits UsbCodetempsensor_edu>make Then i recieve this: C:Users*your username here*DownloadsCode-Nerkits UsbCodetempsensor_edu>make avrdude -c avr109 -p m168 -b 115200 -P /dev/ttyUSB0 -U flash:w:tempsensor.hex:a avrdude: ser_open<>:can't open device "dev/ttyUSB0":The system cannot find the path specified. Then... make: *** [tempsensor-upload] Error 1 This is on the tempsensor project and it DOES NOT say to change the path from USB0 to COM#. But i tried that to no avail. Could someone give me some insight into this problem? Would be helpful SirHobbes3 |
January 15, 2011 by tomroth |
You need to get rid of "dev/ttyUSB0" totally and replace it with COM#. Don't just change the USB0 part, the entire thing in quotes goes away. Tom |
January 15, 2011 by Rick_S |
Try the tempsensor folder instead of the tempsensor_edu folder. The files in that folder are for the adventurous to fill in a lot of blank spaces in the code and as such are incomplete. If you have built the tempsensor circuit as shown in the guide, go to the tempsensor folder, edit your makefile as needed, and you should be able to program. Also, when you change the makefile in windows, you need to replace the dev/ttyUSB0 with comX where X is the number of the port windows assigned your USB/Serial cable. So your line would go from:
To:
(if your cable was at com2) Rick |
January 15, 2011 by Rick_S |
One last note, you have to change the makefile in all your projects to reflect where the USB/Serial cable is located on your computer. The /dev/ttyUSB0 is for Linux/Mac systems and won't work with Windows. Rick |
January 15, 2011 by SirHobbes3 |
Ok guys, thanks a lot!!!! I'll try this. I'll post back really soon. |
January 15, 2011 by SirHobbes3 |
!!!! It works!! Thanks guys! |
January 15, 2011 by Rick_S |
No problem glad to be of help. |
January 16, 2011 by tomroth |
My app has been running continuously on my desktop for over a day now and it's great. I had to add a "Try-Catch" and insert the "Display_Temp.Text = s.ReadLine" statement in it. Seems the data would get lost every now and then and would then throw an error. This gets rid of that. Anyway, my new question is I want to stop using the Nerdkit USB to Serial adaptor and just use a regular serial cable. This will give me the ability to program the DTR pin to use as a reset output. The green wire on the Nerdkit cable on pin 3 of the MCU sends the data. I don't even have the yellow attached. I assumed that the green wire would be equivalent to pin 3 on a serial cable, which is the receive pin. So I cut a serial cable, found pins 3 and 5(GND) and attached them to the MCU. No Data. Any ideas as to why and how to fix it? Thanks! Tom |
January 16, 2011 by Rick_S |
The serial output from the microcontroller is TTL level and inverted and must go through at minimum an inverter and something to drop the higher (up to 12v) voltages down to 5V. There are several methods to do this, Maxim makes several RS232 to TTL ic's such as the MAX232 series. You can purchase pre-made boards on ebay for not a lot of money. The inversion can be done with simple transistors as well. Simple circuits to do this can be found on the web. For instance the Arduino serial single sided board uses the transistor method. Here is a link to it's schematic. You can see the serial connection in the lower left side of the schematic as well as your DTR reset. |
January 16, 2011 by tomroth |
I took microprocessors two semesters ago and learned all about the MAX232. Now I'm staring a use for it right in the face and didn't realize it! I have some MAX232's so I'll connect the MCU to it and see if I can get it working. Thanks! Tom |
January 17, 2011 by Jalex |
Hi tomroth Yea, I had that Com# problem in the make file as well. |
January 17, 2011 by Jalex |
Hi Tom I see you like Visual Basic too. I like your ptogram there. I use it for games and graphics and never did too much with the com ports But I like it a lot. What is the deal with VB10, is it released yet? I still use VB6. Jim |
January 18, 2011 by tomroth |
OK, I give up. I added the MAX232 to my ciruit, changed the COM port in my VB.net program and nothing. If I step through the program and hover over my s.readline variable, I get a value, but not the value currently displayed on the LED output. The nerdkit usb to serial works fine for this. So, I opened TeraTerm and, keeping both COM's connected, looked at the output. Both work perfecly. If I hold my fingers on the tempsensor I get live updates of the temperature for both COM ports! What gives? Is there some difference in the VB.net program for using a MAX232? Shouldn't be. I assume the nerdkit version has one built into it. Any thoughts??? I really need to get my COM port (going through a usb to serial adaptor, I might add), to work. I need the DTR pin for use as a reset. I don't think the nerdkit version can give me that option, only 4 wires. Any help would be greatly appreciated!!! Tom |
January 19, 2011 by mrobbins (NerdKits Staff) |
Hi Tom, Just for "sanity check"... I've seen strange intermittent-appearing serial port issues happen when there wasn't a ground connection between PC and microcontroller circuit. When you switched over to your MAX232-based setup, did you include a ground connection between the PC serial port ground and the microcontroller circuit ground? Mike |
January 19, 2011 by tomroth |
I have pin 5 from my home made serial connector connected to the blue negative rail. I am powering the setup from the usb nerdkit, but have used the 9v battery as well. I just don't get what is happening. Why will they both work in TeraTerm, and only the nerdkit in vb.net? |
January 20, 2011 by mrobbins (NerdKits Staff) |
Oh, I see -- I misunderstood your original description. I haven't personally used VB.NET, but I can make guesses: 1) serial port flow control settings, 2) some sort of buffering going on, 3) line break differences. And I assume that TeraTerm is closed when you experiment with your VB.NET software so that they aren't both trying to access the same COM port? |
January 21, 2011 by tomroth |
I'm not sure what you mean by line break differences. I did change the flow to hardware and Xon/Xoff with no change. The port should be set to 115200 baud, 8 data bits, 1 stop bit, and no parity, correct? |
February 05, 2011 by AndrewHI |
need help with tempsensor code attached copy of my compile errors I think I have copied the tempsensor.c file correctly http://img84.imageshack.us/img84/4517/screenshotth.jpg |
February 06, 2011 by Rick_S |
From the looks of things, you are in a non-standard folder. Mainly because it's showing you in a \Code\Atempsensor_edu folder. The standard folders are tempsensor and tempsensor_edu. I have to assume you wrote your own program, in which case you'd need to show us the code. If you navigate to the \Code\tempsensor\ folder. That folder contains a fully operational tempsensor.c file. Don't forget to modify the makefile in that folder for your system settings. Then try to upload that to the chip to make sure everything is ok. If that uploads, showing us your code can help us help you more. Also, if you copy and paste your code into the forum, be sure to select the code and press the Indent Selection as Code Block button below so it gets formatted properly in the forum. Rick |
March 25, 2011 by Silver07 |
Hi, I was wondering what you have to change in the tempsensor code to make the out put in degrees C. silver07 |
March 25, 2011 by tomroth |
My original program does that. Add this code to your VB app:
Where lblParse is a lable on your form. It's just simple math to convert degrees F to degrees C. Tom |
March 25, 2011 by Silver07 |
Thanks Tom, how can I get the tempsensor program in VB |
March 26, 2011 by Rick_S |
Add this line in the main function as shown here:
Place it just before the // write message to LCD comment. Rick |
March 26, 2011 by tomroth |
Silver, The code for the Tempsensor project is near the top of this post. Just copy and paste it into visual studio or VB Express and add the appropriate buttons and lables and such. Tom |
May 26, 2011 by Rachid |
tomroth, I tried running your VB code using visual studio 2010 and I am getting this error which I dont even know where to start debugging 'WindowsApplication1.exe' (Managed (v4.0.30319)): Loaded 'C:WindowsMicrosoft.NetassemblyGAC_32mscorlibv4.0_4.0.0.0b77a5c561934e089mscorlib.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'WindowsApplication1.exe' (Managed (v4.0.30319)): Loaded 'C:rachidWindowsApplication1WindowsApplication1binDebugWindowsApplication1.exe', Symbols loaded. 'WindowsApplication1.exe' (Managed (v4.0.30319)): Loaded 'C:WindowsMicrosoft.NetassemblyGAC_MSILMicrosoft.VisualBasicv4.0_10.0.0.0b03f5f7f11d50a3aMicrosoft.VisualBasic.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'WindowsApplication1.exe' (Managed (v4.0.30319)): Loaded 'C:WindowsMicrosoft.NetassemblyGAC_MSILSystemv4.0_4.0.0.0b77a5c561934e089System.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'WindowsApplication1.exe' (Managed (v4.0.30319)): Loaded 'C:WindowsMicrosoft.NetassemblyGAC_MSILSystem.Corev4.0_4.0.0.0b77a5c561934e089System.Core.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'WindowsApplication1.exe' (Managed (v4.0.30319)): Loaded 'C:WindowsMicrosoft.NetassemblyGAC_MSILSystem.Windows.Formsv4.0_4.0.0.0b77a5c561934e089System.Windows.Forms.dll' 'WindowsApplication1.exe' (Managed (v4.0.30319)): Loaded 'C:WindowsassemblyGAC_MSILMicrosoft.VisualStudio.Debugger.Runtime10.0.0.0b03f5f7f11d50a3aMicrosoft.VisualStudio.Debugger.Runtime.dll' 'WindowsApplication1.exe' (Managed (v4.0.30319)): Loaded 'C:WindowsMicrosoft.NetassemblyGAC_MSILSystem.Drawingv4.0_4.0.0.0b03f5f7f11d50a3aSystem.Drawing.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'WindowsApplication1.exe' (Managed (v4.0.30319)): Loaded 'C:WindowsMicrosoft.NetassemblyGAC_MSILAccessibilityv4.0_4.0.0.0b03f5f7f11d50a3aAccessibility.dll' 'WindowsApplication1.exe' (Managed (v4.0.30319)): Loaded 'C:WindowsMicrosoft.NetassemblyGAC_MSILSystem.Runtime.Remotingv4.0_4.0.0.0__b77a5c561934e089System.Runtime.Remoting.dll' The program '[8300] WindowsApplication1.exe: Program Trace' has exited with code 0 (0x0). The program '[8300] WindowsApplication1.exe: Managed (v4.0.30319)' has exited with code 0 (0x0). |
May 26, 2011 by tomroth |
Does your form have a button named "btnEnd" and have you created a timer named "tmrDelay"? Tom |
May 26, 2011 by 6ofhalfdozen |
Hi Rachid, That is not an error message. I had to look it up, but that tells you your code completed with no errors, BUT you were running in a special debug mode and not trying a standard program run. Also, it sounds like this occurs when you are running WPF forms instead of standard forms. Try making a standard windows form, adding the buttons, compile/test, then adding Tom's code. It should work better. the following link has more on that message: http://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/867d73ed-2350-4008-a1b8-b7f6e1662058/ hope that helps. |
December 23, 2011 by christian |
Hi tomroth (and everyone else), I'm new to serial comm programming. I also have the temperature sensor.I would like to know if you have a similar version of your VB application in Visual C++. If not please suggest any ideas of where to get a reference app on serial com programming ( Visual C++ ) that will help me show the output of the temperature sensor. I will greatly appreciated (I have searched on the web but the few apps I found, I could not understand much of their code and when I tried to compile them got all sorts of errors). Your app is short and a lot easier to understand compared to others. Thank you! |
December 23, 2011 by hevans (NerdKits Staff) |
Hi christian, I haven't spent too much time doing windows development, but for the little time I did do it for the microsoft MSDN documentation was very helpful. They have what appears to be reasonably good documentation for the Serial Port Class. Perhaps that can get you going in the right direction. Humberto |
December 23, 2011 by pcbolt |
@ christian I actually modified a C program recently to read the Com ports from a console window. I compiled it with Visual C++ so it should easily adapt to a Windows format. The MSDN documentation is a little sketchy on some parts, but it does show some ways you can extend control over the Com ports. Here is the listing I compiled: // Complete listing
|
Please log in to post a reply.
Did you know that multiple MOSFETs can be used in parallel to switch bigger currents on and off? Learn more...
|