LinkMeter v2 Homebrew BBQ Controller - Part 1


 
Status
Not open for further replies.
Originally posted by Ed Pinnell:
Does this chip boot normally in an Arduino but not your PCB?
Yup if I pop it out and put it in another board (which also has a resonator and not a crystal) it starts up no problem. So either my board is garbage or I designed something poorly. I would have populated a second PCB with the bare minimum but I am out of those DIP chip holder dealies.
 
Bryan if you want another set of eyes on the issue I would be glad to paypal you the cost of a bare board and shipping and I will populate it and T/S as well. I just got my first Uno in, so I can at least do some comparisons between the two. I won't claim to be an arduino expert, but I did start my work career as a hardware design/trouble shoot expert, so there is a remote chance I could help.
 
Originally posted by Ed Pinnell:
You haven't made public the *.brd or the *.sch file for v3.0 so it's difficult to offer any insightful suggestions, but one of the more or less commonly made mistakes with EAGLE are short, unrouted nets, especially with compact boards like this one. I generally don't rely on the autorouter so I am more prone to that particular problem than someone who uses the autorouter exclusively, and yes, I know the autorouter is not included in the free version of EAGLE.
They're in git actually, this is the 3.0 board
https://github.com/CapnBry/Hea...a7b8a3762dda1ada6237

But it has had several revisions since then, for some obvious mistakes. The /eagle/ folder in the latest commit (from yesterday) is the most complete but different than what I've got in front of me right now. The png version I haven't kept in sync though, I will once I have a working version.
 
After I got down to this point:


And was still having the same problem, Ed suggested that I try more bootloaders. I pulled the one from the Arduino development git which includes a commit labeled "Fix to optiboot infinite loop problem". The new bootloader works fine. I had tried some other optiboots before this but don't really know if they were actually getting flashed properly. Who knows. So... I guess the next step is to put all the parts back in and see if it still works as well as it used to once booted:
 
I put all the parts back together (1hr including having to cut the invalid PCB traces), it worked, all the probes worked, the fan worked, the LCD worked, /reboot worked 20 times in a row. I then fixed the routing on the v3.1 board and emailed it off to be built. Looking forward to have it back mid-October for testing. I CAMed out Gerber files for this version to have more informative silk layers, we'll see if I screwed that up. EAGLE and a png of the schematic will hit git in a few minutes.
 
Originally posted by Bryan Mayland:
I put all the parts back together (1hr including having to cut the invalid PCB traces), it worked, all the probes worked, the fan worked, the LCD worked, /reboot worked 20 times in a row. I then fixed the routing on the v3.1 board and emailed it off to be built. Looking forward to have it back mid-October for testing. I CAMed out Gerber files for this version to have more informative silk layers, we'll see if I screwed that up. EAGLE and a png of the schematic will hit git in a few minutes.

Good news Bryan -- I spent the better part of the morning yesterday reading about bootloaders, but convinced myself that wasn't your problem since I couldn't find any offensive watchdog references in your code...wish I had at least tossed out the idea sooner, but glad your back on the right path.
 
Yeah crazy that the the state of the r1 register on initial bootup depends on which board it is mounted in. I could see it being random but it consistently was one way in one and the opposite in another. It does sort of explain why it would continue working in the LinkMeter board even if the power was pulled as long as the board capacitors still had 1V of power left in them. Just enough juice to keep the register from going back to its initial state.
 
-- The bootloader I had been using is the Optiboot that came with Arduino-0022. I'm not sure if which Optiboot comes on Arduino Uno boards or preinstalled on ATmegas from Sparkfun.

-- I am now using the Optiboot that came with Arduino-1.0beta3. I think tried westfw's version but when I went to flash the 1.0b3 offical version I noticed that I may have not successfully overwritten the optiboot hex file properly sooooo I'm going to assume that his works too considering it has the same fix in it.

-- The 3 advantages are quicker boot, more user program space, and 115200 baud. Having the bootloader and the HeaterMeter serial run at the same baud is just one less thing that can go wrong during the firmware upgrade. I'd actually like to "rewrite" avrdude down to a custom app for LinkMeter that isn't so boneheaded about error handling, and will remove several dependencies.

-- It appears to be the r1 register because if you take out the line that clears it on boot, then the problem comes back. The code explicitly says that it assumes r1 contains 0 (and looking at the assembler, the compiler things r1 contains 0 as well). Now that I'm really thinking about it, when the chip worked in my test board, sometimes Optiboot would blink a LED on D13 and sometimes it would not, booting right into user code. Looking at the Optiboot source, it should always blink the LED unless it thinks the reboot occurred due to watchdog. It seems that this sort of behavior could also be caused by r1 not being cleared.
 
Originally posted by Ed Pinnell:
If you have time, I'd be interested in what westfw's fusebytes sketch reports on the "new" optiboot...
You got it
<pre class="ip-ubbcode-code-pre">
Compiled for ATmega328P
No Serial Number

Fuse bits (L/H/E): FF DE FD
Lock bits: CF
Signature: 1E 95 F (ATmega328P)
Oscal: 93

Fuse Low = 11111111 (FF)
||||++++______Low Power Crystal 8 - 16MHz
||++__________Start Up Time=11
|+____________Clock Output Disabled
+_____________(no divide)

Fuse High = 11011110 (DE)
|||||||+______Reset to Bootstrap
|||||++_______256 words (512 bytes)
||||+_________EEPROM Erased on chip erase
|||+__________Watchdog programmable
||+___________ISP programming enabled
|+____________DebugWire off
+_____________RST enabled

Fuse Extended = 11111101 (FD)
|||||+++______Brownout at 2.7V

Lock Bits = 11001111 (CF)
||||||++______Read/Write to everywhere
||||++________R/W Application
||++__________No Write to Boot, no read from App

Bootloader at 0x7E00 is not readable</pre>
EDIT: And the old Optiboot from Arduino-0022 is exactly the same in case you were wondering.
 
Finally found a good chip to use for my expander setup and I have a buddy that is going to look at extending the OpenWRT code to handle two serial inputs, so here is what I think I am going to build.

1 - Standard Linkmeter board
1 - Barebones Board
1 - Switchboard

This way I can use a single button set and a single LCD. If my math is correct this should allow two grills to be controlled via the web at the same time and displayed/controlled one at a time through the hardware for a grand total of another ~10 bucks.
 
Originally posted by Jon Schelmbauer:
1 - Barebones Board
Oof don't build this! There are two big problems with it.

#1 (the fatal flaw) is that the pullups on the analog ports for the probes should be attached to 5V not GND like they are in there. The 1k on the button board still is supposed to go to ground. Check the schematic that is in git to see how it is supposed to be.

#2 the voltage divider on the RX line, R10 and R14 isn't supposed to be there. Again this is fixed in git.

That's an interesting solution with the switch though to go between the two.
 
Originally posted by Bryan Mayland:
<BLOCKQUOTE class="ip-ubbcode-quote"><div class="ip-ubbcode-quote-title">quote:</div><div class="ip-ubbcode-quote-content">Originally posted by Jon Schelmbauer:
1 - Barebones Board
Oof don't build this! There are two big problems with it.

#1 (the fatal flaw) is that the pullups on the analog ports for the probes should be attached to 5V not GND like they are in there. The 1k on the button board still is supposed to go to ground. Check the schematic that is in git to see how it is supposed to be.

#2 the voltage divider on the RX line, R10 and R14 isn't supposed to be there. Again this is fixed in git.

That's an interesting solution with the switch though to go between the two. </div></BLOCKQUOTE>

Thanks for the heads up - I used the schematic that was in git at the time and didn't notice the errors. This is basically a straw-man, and will be built by partially populating the "final" board when you get to that point (buy two PCBs, build one full up and throw jumper wires as needed from board 1 to the partial board)...I am definitely not trying to reinvent the wheel here, maybe just make it a little bigger.

I will do some testing/debug on my daughter board though. I spent 2 weeks looking for a suitable chip that is under $5-$6 each, and I think this one will work, but I will test it thoroughly before telling the group that it's a valid 2 grill solution. Unfortunately it is an SMD, but this was the best cheap solution I could find.
 
I just got a chance to look at your V3 board/schematic...Looks good. I actually don't even need to keep a second "barebones" as a reference now, just don't populate anything in the boxes
icon_smile.gif


Do you have any concerns you still working on with it or do you think they are close enough to pull the trigger on an order?
 
Quick question.

I got a version 3 wrt54g router that I plan on using for this project. I don't have the heatermeter yet, but would like to flash the router to see if I can get that working.

Can I just flash the linkmeter .bin file via the web interface?

If I do this will it run? I know it won't find a heatermeter attached, but can I get the web interface to run? I'm trying to put something together to be able to complete the cooking profile code. It's currently written in C as a stand alone executable, but would like to get it integrated into the linkmeter code. I'm hoping I can do some initial debug work before completing my heatermeter.

I'm going to make three of them in all, one for me, one for my buddy, who is actually writing the code, and one for my brother. I guess I'm anxious to get started
icon_smile.gif


thanks,
dave
 
Originally posted by Jon Schelmbauer:
I just got a chance to look at your V3 board/schematic...Looks good. I actually don't even need to keep a second "barebones" as a reference now, just don't populate anything in the boxes
icon_smile.gif


Do you have any concerns you still working on with it or do you think they are close enough to pull the trigger on an order?
The only thing I'm not enamored with about the controllers based on the Bob Hruska design is the blower drive circuit. I've been fiddling with a cheap-but-good DIY ATC and I used this circuit using the IRL510 and so forth. It works okay but both blower connections are above ground. I use jacks on both ends of the connection between the controller and the blower assembly on the cooker. I used a 1/8" stereo connection on one end and I have to be sure it is plugged in before I turn on the power. It would be nice to be able to use a standard grounded power connector. Those are designed so that they can be plugged in hot with no worry about the hot terminal coming in contact with the grounded jack. There is a two-conductor version but it is not widely available.

I'm thinking for the next version of my DIY ATC I'm going with one side of the blower grounded and a P-channel FET between +12V and the blower, probably the IRF9510. A small signal NPN will be used for a inverting driver, maybe an MPS-A05 type.
 
Originally posted by Jon Schelmbauer:
I just got a chance to look at your V3 board/schematic...Looks good. I actually don't even need to keep a second "barebones" as a reference now, just don't populate anything in the boxes
icon_smile.gif


Do you have any concerns you still working on with it or do you think they are close enough to pull the trigger on an order?
Yeah the design is supposed to be modular in that way. Some parts are optional depending on which config you're doing to be doing. I think the parts list is final. I'll be making a page in the wiki with the parts needed for each configuration if you want to wait a day or two at the most. I have a new MOSFET I want to try for a day before I recommend it... which I just noticed that since I've purchased it 2 weeks ago Mouser went from having close to 1,000 in stock now only has 24 and lists production delays. It was a 60A/60W part with a 0.012 ohm Rds(on) at 4.5V gate and it was $1.07. It was like my dream part! Whelp.
 
Originally posted by D Peart:
I got a version 3 wrt54g router that I plan on using for this project. I don't have the heatermeter yet, but would like to flash the router to see if I can get that working.

Can I just flash the linkmeter .bin file via the web interface?
Yeah you should be able to flash linkmeter but it requires the custom RRDtool package, and the custom avrdude package (only if you want to firmware upgrade from the webpage). It also requires the standard lucid-web-http package and its prerequisites, if you don't get one from at least the past few months it a memory leak that eats up all the memory over a day or two. That may not be an issue if you're just doing development.
 
Originally posted by Brad Baker:
It works okay but both blower connections are above ground. I use jacks on both ends of the connection between the controller and the blower assembly on the cooker.
Yeah I use a RCA jack for this reason. They take a little more space but there's not really a chance of it getting shorted when plugging in.

I've never been a fan of the blower driver circuit at all. I'd prefer using some sort of adjustable switching supply that puts out a (relatively) smooth voltage rather than the PWM junk we do now. I've done a lot of experimenting with different power circuits but the slow PWM frequency (~500Hz) means that the inductor would be massive. You can pump up the frequency to around 25kHz but it messes with all the other things attached to the same port (in ways that could probably be fixed in software). But I couldn't get the circuit to work anyway. The final problem being that we only have 1 output to work with and that MAY be able to produce 5-12V adjustable output but there's no way to turn it off. If you can figure out some way to do it, maybe even using the remaining analog pin as a digital out, then that would be awesome.
 
I'm trying to figure out the proper way to install linkmeter.

From this post:
http://tvwbb.com/eve/forums/a/...791098906#2791098906

It says I should install openwrt first, then install linkmeter, but I thought I also read that you had your own custom ROM that we should install instead.

I was thinking that the custom ROM was the .bin file on git. Is this correct? Or should I install openwrt first?

thanks,
dave
Originally posted by Bryan Mayland:
<BLOCKQUOTE class="ip-ubbcode-quote"><div class="ip-ubbcode-quote-title">quote:</div><div class="ip-ubbcode-quote-content">Originally posted by D Peart:
I got a version 3 wrt54g router that I plan on using for this project. I don't have the heatermeter yet, but would like to flash the router to see if I can get that working.

Can I just flash the linkmeter .bin file via the web interface?
Yeah you should be able to flash linkmeter but it requires the custom RRDtool package, and the custom avrdude package (only if you want to firmware upgrade from the webpage). It also requires the standard lucid-web-http package and its prerequisites, if you don't get one from at least the past few months it a memory leak that eats up all the memory over a day or two. That may not be an issue if you're just doing development. </div></BLOCKQUOTE>
 
Status
Not open for further replies.

 

Back
Top