NEW: Learning electronics? Ask your questions on the new Electronics Questions & Answers site hosted by CircuitLab.
Project Help and Ideas » first real-time project
February 09, 2010 by mongo |
OK, Let's see if this makes sense The project is for testing a wind turbine through remote sensing. Here's what it should be: I recently purchased a pair of transceivers like the ones in the tractor pull monitor. The difference here is that they will be just a data link between a PC and the NK. There will be four testing parameters. 1) actual wind speed via anemometer input. 2) RPM of the turbine. 3)DC voltage produced across a load and 4) DC current across the same load. Wattage can be figured internally. The reason for the remote is that the test bed is on top of my vehicle and the monitoring will be from a second observation vehicle so it can be under visual at all times. The observer will have the PC and receiver while I maintain steady speeds with the turbine. I am still at a loss when it comes to programming from scratch so any good advice will be used to help make this thing work. Construction progress to follow as the parts arrive. |
---|---|
March 06, 2010 by mongo |
Well, the radio components finally arrived. Same setup as the tractor pull project. Now I have to figure out how to make them talk the same language. |
March 06, 2010 by JKITSON |
MONGO MABY TOMORROW I CAN POST THE PROGRAMS I USE FOR THE TRACTOR PULL SLED. I WILL ALSO TRY AND POST THE SCHEMATICS FOR WIRING ALSO... NOTE (WILL POST THEM IN THE TRACTOR PULL FORUM) JIM |
March 07, 2010 by pbfy0 |
maybe this:
|
March 25, 2010 by mongo |
The interface wiring and setup is where I am stuck right now... There is no communication between the PC or the NK to the RF modules. Signal levels are there but nothing intelligent going through. I must be missing something obvious but not sure where to start. |
March 31, 2010 by BobaMosfet |
mongo-
Hope that helps move you in the right direction. BM |
March 31, 2010 by mongo |
I think it's the baud rate that is giving me troubles. The RF modules look for 19200 BPS and the NK is still trying to run USB speeds. I need to knock down the data speed. It will slow down the communications but that's not a problem. I just haven't figured out how. I am thinking that either a different crystal of a hack in the UART.H file? |
April 29, 2010 by Jer |
I would like to use the built in 16bit counter. All I need is to count external pulses (more than 256) and display it onto the LCD. Can some body help? Also I would like to get a list of the names used in coding of all the special registers. For example like PORTB, TC0, ADC_CH1. Thanks for your help! Jer Ford 4/29/2010 |
April 29, 2010 by JKITSON |
MONGO Here is the code I used on the Tractor Pull Sled for setting up the serial port....
The UBRROL=47 sets the serial port to 19200. This is used on both the Transmit and Rec. mcu's. Hope this helps Jim |
April 30, 2010 by hevans (NerdKits Staff) |
Hi Jer, There are a few ways you can achieve what you are talking about. I think the simplest way to go about it is to use a normal pin change interrupt to detect the pulses, then just increment a 16 bit integer every time the interrupt fires. We go over pin change interrupts in our interrupts tutorial. In general, I would recommend getting familiar with registers as you encounter (or need them), as I find this lets you get more familiar with them and really understand their purpose instead of getting lost in a very long list of register names. However if you do prefer to see them all at once the datasheet has a big table starting on page 343. Hope that answers your questions. Humberto |
May 01, 2010 by mongo |
Thanx Jim, I will give it a try once I get set back up. I haven't done anything with the NK since the laptop crashed and I am still working on getting Windows 7 to work with it. I'll keep all posted as I make some progress. |
May 01, 2010 by Jer |
Hi Humberto Thanks for your response. What I would like to do is measure frequency up to 50KHz and if I use an interrupt the uC will be to busy to update the LCD and the keypad and all the other peripherals like DACs. So I think using the 16bit counter to count the external pulses and use an interrupt to flag the program when to read the 16bit value and the display it. What I see in the doc’s is that the crystal is using the same pin as the 16bit counter input. Is it possible to use an external oscillator, at the same frequency, and feed it into the uC there by freeing up the 16bit counter input? My project is a function generator that uses the uC to adjust all the analog control signals so the user only has to enter the function generator output setting via the keypad. I guess, if the 16bit counter can’t be used in this way I will just build an external counter. Thanks for any other suggestions you may have. Jer |
May 02, 2010 by hevans (NerdKits Staff) |
Hi Jer, The input to the timer/counter unit is the clock pins. In general, the timers are used to count clock cycles. You could build an external timer, which would actually be pretty neat to see working. However I would suggest at least trying to keep track of the ticks using a pin change interrupt and a simple 16 bit variable. The interrupt handler itself should only be a few instructions long, running that at 50KHz should be possible. Remember your clock is running at 14.7MHz. 14.7MHz/50KHz gives you about 300 clock cycles between every firing of your 50KHz signal. This is now a whole lot, but it should be plenty to count the edges and write some info to the LCD. You are right that it wont leave that much time to do processing on that data, but you will run into that problem with an outside counter too. Looking forward to hearing more about your project! Humberto |
May 05, 2010 by Jer |
Hey Humberto Could please explain,in detale, how to write ISR vector code. Naming rules etc. The examples don't realy explain enough it seems like theres alot more to know and the it seems vage in the 168 uC pdf doc. Also I rewrote the lcd.c to move the LCD data lines to port c tested and works to free up Ext. Int0 & Int1. Also I wrote code to count ext. pulses on the 16bit counter. Currently I have the code to display the count and clear the count on the pin change BUT I want it to work on ext-Int0 or Int1 so that it will fire the ISR on the fowling edge. Thanks for all your help! Jer |
May 05, 2010 by Jer |
Please excuse my bad spelling. I'll use spell checking next time. Jer |
May 06, 2010 by hevans (NerdKits Staff) |
Hi Jer, There actually isn't that much to the ISR notation. The avr-libc interrupt documentation has a few examples, but it is pretty much as easy as:
There is a long list of vector names in the interrupt documentation I linked to above. It can sometimes be a bit tricky to map the actual interrupt you want to fire to the vector name, if you have a question about one of them don't hesitate to ask. I've never personally used the external interrupts you are trying to use. I find the normal pin change interrupts get the job done just as well (and almost all the pins on the MCU can trigger it). If you want to use the External Interrupt pins make sure you set the EICRA and EIMSK registers correctly (page 68 and 69 of the datasheet). Hope that helps. Humberto |
May 13, 2010 by mongo |
Hey Jim, Got a question for you: I noticed a circuit between the NK and the 433 MHz transceiver in the photos. Whatsit do? I have most of the circuit wired but there seems to be a signal problem in the data lines. The scope shows the inputs to be high and driven low, so I am guessing that that circuit is an inverter or driver of some kind? Also, I am using a USB adapter to the other one but it has a different situation. Still working on that. (No normal serial ports on the new laptop) Thanx for your help, |
June 13, 2010 by mongo |
Well, After months of messing with it, I finally had to give up for now. After researching the components, here is what I found... When I ordered the transceivers, they were supposed to be a Sure Electronics GP-GC010 433MHz pair. Looking at what I actually got, I thought thy were exactly that but there were no numbers that matched up to it. As it turns out, the components were substituted by the manufacturer and instead of the GP-GC010 units, I got a pair of CY2196R units. The specs were more forgiving, as they can run at the 5V supply range without having to reduce it to 4.2V max but after trying unsuccessfully over the last couple of weeks, I noticed there are two other CY2196xx models. CY2196T and CY2196TR. The differences? T = Transmitter, R = Receiver, TR = Transceiver. They shipped me two RECEIVERS. The only reason they have a data IN (RXD) pin is to program the channel. They do not transmit. Needless to say, I am very disappointed with the deal I got and have notified the manufacturer of my discovery. chances are, I am out the $$ it cost me, as well as the time I have put into it. |
June 13, 2010 by JKITSON |
HI MONGO Sorry I missed your post on May 13. I hooked the xmtr directly to the mcu. The circuit you are looking at is probably the 4 volt regulator I had to put in. I just purchased a pair of 900 mhz units from Sure and they seem to work fine..I am using mine as one way units. Xmit from the nerdkits mcu to multiple rec. stations. Am about to try the multiple concept out next week. Jim |
August 08, 2010 by mongo |
OK, I had some time to cool off and read some more on these transceivers. It appears the cy2196R is both tx and rx. I did finally get the things to transmit... I think. Not sure, as I am still not getting anything from the other unit on the receive side. I am testing the setup with the terminal program. I found that the signal from my USB to TTL converter needs the signal inverted to work on the input of the 2196. Now, I see activity on the RTS/CTS line so it must be doing something. The other unit is just sitting idle with power to the proper pins and an LED to give me a visual - but nothing happens. |
Please log in to post a reply.
Did you know that you can build a giant scrolling LED array with our microcontroller kit? Learn more...
|