-
1Step 1
PCB Rev 1.0 Errata:
- Diode D3 is reversed in the board silkscreen. Place it backwards (opposite of what is shown) for a positive supply, and normal (as shown on the silk screen) for a negative supply. Rev 1.1 has been changed to be correct.
- Crystal X1 is rotated 90 degrees on the board silkscreen. Instead of placing it with the long side oriented up / down, place it with the long side oriented left / right. Rev 1.1 has been changed to be correct.
- There is a problem with the ISP circuit, which prevents you from programming a bootloader (or flashing fuses, or doing anything with the ISP) when the AVR plus all components are on the board. Please program the bootloader and flash fuses (using the script in power_supply/bootloader/program.sh) prior to soldering the entire circuit. You can do this in one of two ways: either program the chip prior to placement (if you have some sort of removable TQFP socket), or solder the AVR + crystal + 8pF caps and then program it, and only once the bootloader is programmed do you finish soldering the rest of the circuit. UPDATE: In the latest iteration of the Rev 1 controller, I have decided to not solder the encoder pullups / caps / TVS directly to the board; rather, I will solder it to the encoders themselves (which can then be detached from the board using the jumper cables). This allows ISP to work properly when the encoders are unplugged. Rev 1.1 has been changed to have jumpers to disconnect the encoders, so the supporting hardware can just stay on the board.
- The current limiting LED indicator light does not turn on properly. Current limiting works, but the indicator light does not. To fix it, connect pin 6 of op amp U2 to a -3v source rather than GND. Two resistors (20k and 5.1k) in a voltage divider across the -15v supply works fine for this. See this log post for more details and a picture of how I did this.
-
2Step 2
Use PCB Rev 1.1 to fix all four of these problems.
-
3Step 3
When soldering up the negative channels, be sure to reverse the polarity of the following components:
- All three diodes
- Both electrolytic capacitors
- Both status LEDs (the + side of the LED should go to the pin marked GND)
You also need to populate the 0-ohm resistors in the NEG board areas (rather than the POS ones).
Of course, you also need to ensure that V+ is connected to VB and V- is connected to VA when soldering the power inputs.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.
So I finally programmed this thing using FLIP however I'm not seeing anything on the LCD. I dont have any of the channels hooked up yet however. Should I be getting something on the LCD?
Are you sure? yes | no
Yeah, you probably should be... I would suggest debugging to see how far the program gets. Perhaps add a single pin output at the start of main, and toggle a pin after each startup instruction. My guess is that there is a problem with twi_init() - in my experience that is the most likely culprit when something hangs at startup. How many ADC chips have you installed? Have you configured the addresses yet?
Once we have narrowed down exactly where it is hanging, we will have a better idea of how to fix it.
Cheers
Are you sure? yes | no
Is it to program the controller using the LUFA bootloader?
Are you sure? yes | no
Yes, you can either use the default bootloader (and adjust clock speed in code) or you can program the LUFA bootloader and flash fuses. When I made the board I didn't know much about the default bootloader, so I added the ISP headers. If I were to do it all again today I would just use the default bootloader (that's what I am doing on my new projects).
Are you sure? yes | no
As an update, I supply power to the controller and connect the USB but it doesn't enumerate on my computer. So I am currently troubleshooting. :/
Are you sure? yes | no
Some things to try...
-Verify there are no bridges on any of the microcontroller's VCC, GND, or USB data pins (obvious, but critical, and I for one often miss a bridge somewhere)
-Verify that the 1uF capacitor is connected from UCAP to GND (my latest project was recognised as a USB device, but would not properly enumerate, and the issue turned out to be a bad connection from UCAP to the capacitor)
-Verify continuity between the USB data pins and the 22 ohm resistors, and then again from the resistors to the micro B connector pins. (Since my design relies on jumper wires to bring the USB headers out to the front panel, there are more potential trouble spots that you need to ensure are connected well.)
-If you have a scope, you can check out the two USB data lines and see if there is a signal
Good luck!
Are you sure? yes | no
Thanks for the tips! I'll have a look tonight hopefully but I have actually used 20ohm resistors on the data pins, do you think this would be an immediate showstopper?
Are you sure? yes | no
Found the problem! the tvs diodes that I used for some reason dont play nice. I did up one of your ubbb boards and left the tvs diode off and voila! so i just took it off on the power supply controller and boom, enumerated straight away!
Just so I got it straight, I can just build your avr code with winavr and burn the hex via FLIP?
Are you sure? yes | no
Excellent to hear. I am reconsidering my (recent) use of TVS diodes... I seem to have about a 50% success rate. Not sure why, I must be picking the wrong ones or something. (I had read some literature on ESD almost a year ago and figured it would be good to start designing against it... but it seems to be more complicated than just throwing a TVS on the design.)
Anyway, yes, you should now be able to just build and upload via flip... to my knowledge you are the first person other than me to get this far, so there may be some issues. Let me know how it goes and I can try to support you!
Cheers
Are you sure? yes | no
Well here is the first one! I set up all the symbolic links for the build and lib files but running just make gave an error where rm is used under clean (rm -f *.o), it throws up a dialog saying rm.exe was unable to start correctly.
So i then used make --debug=b-k which gave,
Reading makefiles...
Updating goal targets....
File `all' does not exist.
File `clean' does not exist.
Must remake target `clean'.
rm -f *.o
Failed to remake target file `clean'.
File `powersupply.hex' does not exist.
File `powersupply.elf' does not exist.
Must remake target `powersupply.elf'.
avr-g++ -DADC_PRESCALER_MASK=0x07 -DCHANNEL_COUNT=4 -DUSB_VENDOR_ID=0x4200 -DUSB_PRODUCT_ID=0xFF01 -DUSB_RAWHID_RX_SIZE=10 -DUSB_RAWHID_TX_SIZE=10 -Wl,-u,vfprintf -lprintf_flt -lc -DF_CPU=16000000 -mmcu=atmega32u4 -pedantic -Os -Wall -std=gnu++11 -I./ -o powersupply.elf PowerSupply.cpp Channel.cpp Display.cpp Encoders.cpp State.cpp timer0.c timer1.c usb.c lib/analog/analog_asynchronous.c lib/bootloader/bootloader.c lib/Button/Buttons.cpp lib/Hd44780/CharDisplay.cpp lib/Hd44780/Hd44780.cpp lib/Hd44780/Hd44780_Direct.cpp lib/usb/rawhid.c lib/twi/twi.c
make: *** [clean] Error -1073741502
cc1plus.exe: error: unrecognized command line option "-std=gnu++11"
cc1plus.exe: error: unrecognized command line option "-std=gnu++11"
cc1plus.exe: error: unrecognized command line option "-std=gnu++11"
cc1plus.exe: error: unrecognized command line option "-std=gnu++11"
cc1plus.exe: error: unrecognized command line option "-std=gnu++11"
cc1plus.exe: error: unrecognized command line option "-std=gnu++11"
cc1plus.exe: error: unrecognized command line option "-std=gnu++11"
cc1plus.exe: error: unrecognized command line option "-std=gnu++11"
cc1plus.exe: error: unrecognized command line option "-std=gnu++11"
cc1plus.exe: error: unrecognized command line option "-std=gnu++11"
cc1plus.exe: error: unrecognized command line option "-std=gnu++11"
cc1plus.exe: error: unrecognized command line option "-std=gnu++11"
cc1plus.exe: error: unrecognized command line option "-std=gnu++11"
cc1plus.exe: error: unrecognized command line option "-std=gnu++11"
cc1plus.exe: error: unrecognized command line option "-std=gnu++11"
cc1plus.exe: error: unrecognized command line option "-std=gnu++11"
make: *** [powersupply.elf] Error 1
make: Target `all' not remade because of errors.
make: write error
Failed to remake target file `powersupply.elf'.
Did you originally build everything on linux or windows?
Are you sure? yes | no
I built on Linux using avr-gcc and also verified on OSX using cross pack (a Mac package of avr-gcc). I do know that other people have had some difficulty using Windows on other projects of mine; look at my Stubby project for some hints on compiling with Windows. Specifically make sure you are on a recent version. Of course if you have a Linux box / VM available it may be easiest to just use it.
Are you sure? yes | no
As you said fired it up on a ubuntu vm, worked straight away. I'm at work at the moment but uploading the .hex via FLIP shouldn't be a problem (hopefully)! I am still waiting on a the 0.1% resistors for my channels but once they arrive I should be in a position to cobble everything together and do an initial test. Thanks again for your help. BTW drum master is looking good!
Are you sure? yes | no
Great to hear it, and thank you!
Are you sure? yes | no