RPI Haptics:Pauline
From BluWiki
Similar design to Baracus, with a different layout.
A parts list is being developed here.
Contents |
Features
- LEDs driven directly from the 168, no transistor, and one quad resistor
- DC/DC step up converter allows for multiple battery sources (2v->5v input)
- Correctly wired RF receiver
- Correctly wired LEDs
- Proper 3x2 ICSP header
- 2-position DIP switch with permanently "on" DC-DC converter
- Smaller SOIC output amplifiers instead of through-hole (1 amp / pwm output)
- Evenly bright LEDs
- Breakout into through-hole contacts for unused ADC and other IO (side of pcb)
Pin Equivalences
| Arduino | Purpose | Functions | Port + Number | 168 Pin |
|---|---|---|---|---|
| 7 | IR LED | PCINT23/ANIN1 | PD7 | 11 |
| 5 | Red LED | PCINT21/OC0B/T1 | PD5 | 9 |
| 6 | Green LED | PCINT22/OC0A/ANIN0 | PD6 | 10 |
| 9 | Blue LED | PCINT1/OC1A | PB1 | 13 |
| 3 | Output1 Control | PCINT19/OC2B/INT1 | PD3 | 1 |
| 11 | Output2 Control + MOSI | PCINT3/OC2A/MOSI | PB3 | 15 |
| 10 | Output3 Control | PCINT2/SS/OC1B | PB2 | 14 |
| 1 | Battery | ADC1/PCINT9 | PC1 | 24 |
Assembling Pauline
- Solder the 16 MHz crystal
- Solder the diode, C1 (1uF) capacitors, 100 uF capacitor and MAX756
- Solder the RJ-11 jack
- Solder the 22 uH inductor
- Test that the MAX756 is outputing 5V and using about 20-30 mA (pin 1 or 5)
- C2 (22pF) capacitors, R1 (10.5 kOhm) resistor, ATmega 168 and DIP switch
- Test that Pauline is using 30-40 mA
- Add the ICSP header and try connecting with the AVRISPMKII
- Add components for driving LEDs (quad resistor R2 and LEDs)
- Upload PaulineBlink from the Arduino environment, the LEDs should flash (RGB, off, IR, off); if not:
- Check the resistance between the 168 side of the resistor and the positive terminal
- Check the resistance between the LED positive terminal and the 168
- Make sure the solder is clean around the quad resistor, and there is no cross-solder
- Add components for driving output
- Upload PaulineBuzz from the Arduino environment, the motors should buzz (output1, pause, output2, pause, output3, pause); if not:
- Check for cross-solder on the driver chips
- Make sure your motors are wired correctly
- Add RX module
Programming Pauline Using AVR Studio
- Connect the AVR ISP MKII to Pauline and open AVR Studio.
- Go to Tools > Program AVR > Connect
- Under "Main", select ATmega 168
- Under "Program", select the "..." next to "Input Hex File" and select Pauline.hex
- Hit the "Program" button
- Under "Fuses", next to "EXTENDED", "HIGH" and "LOW" enter 0xF8, 0xDF and 0xFF (same as Arduino fuse bits)
- Hit the "Program" button
- Under "Lock Bits", next to "LOCKBIT" enter 0xCF (same as Arduino lock bits)
- Hit the "Program" button
Programming Pauline Using the Arduino Environment
- Change the above settings in AVR studio
- Open C:\Documents and Settings\username\Application Data\Arduino\preferences.txt
- Change "upload.using=bootloader" to "upload.using=avrispmkii"
If this doesn't work, you may need to disable the AVR Studio drivers and use the libusb drivers instead. There are some notes here on doing that.
Operation Notes
- When reprogramming or updating firmware, via the ICSP header, output 2 will oscillate.
- When not in use, remove batteries from pauline to prevent parasitic draw (70ma). Pauline pcb's can stay in standby for well over 20 hours from 2 standard NiMH / NICD 2000mah rechargeable AA cells.
- When choosing rechargeable batteries for performances, be sure to look for data regarding output current, and charging current, most unmarked AA / AAA style cells require overnight charging, whereas certain cells accept larger current charge rates.



