DuckMiniEnglish: Difference between revisions
ArneRossius (talk | contribs) No edit summary |
ArneRossius (talk | contribs) |
||
(7 intermediate revisions by the same user not shown) | |||
Line 20: | Line 20: | ||
Instead of using the large battery holder, the PCB also provides a footprint for a CR2032 button cell holder. Due to the lower voltage and the large internal resistance of the button cell, the quacking of the duck will be very quiet and the LEDs will be dimmer, but for a duck without sound which won't be turned on for days at a time, the button cell is still a good option. | Instead of using the large battery holder, the PCB also provides a footprint for a CR2032 button cell holder. Due to the lower voltage and the large internal resistance of the button cell, the quacking of the duck will be very quiet and the LEDs will be dimmer, but for a duck without sound which won't be turned on for days at a time, the button cell is still a good option. | ||
* [[:File:DuckMini-rev1.0-schematic.png|Schematic]] (PNG) | * [[:File:DuckMini-rev1.0-schematic.png|Schematic]] (PNG) | ||
Line 28: | Line 26: | ||
* [[:Media:DuckMini-instructions-rev1.1.pdf|Kit instructions Rev. 1.1]] for PCB Rev 1.0 | * [[:Media:DuckMini-instructions-rev1.1.pdf|Kit instructions Rev. 1.1]] for PCB Rev 1.0 | ||
== | === Firmware === | ||
* [[:Media:DuckMini-20190501.zip|Firmware version 2019-05-01]] | * [[:Media:DuckMini-20190501.zip|Firmware version 2019-05-01]] | ||
== Version 2.0 == | |||
=== Hardware === | |||
In version 2, the controller was replaced with a 14-pin type, either ATtiny84 or ATtiny804/814 can be used. | |||
The LEDs are now controlled with Charlieplexing, requiring only 7 pins. The transistors have been rewired to an emitter follower configuration, eliminating the need for base resistors and making the arrangement compatible with Charlieplexing. One column of LEDs is selected by driving the corresponding pin high, causing the transistor to supply the LED anodes with voltage, and the cathode pins for all LEDs in that column which should light up are driven low, while the remaining pins remain floating (set to input). This cycles through all 6 columns and repeats (like multiplexing). | |||
* [[:File:DuckMini-rev2.0-schematic.png|Schematic]] (PNG) | |||
* [[:Media:DuckMini-rev2.0.sch|Schematic]] (EAGLE 4.x) | |||
* [[:Media:DuckMini-rev2.0.brd|PCB layout]] (EAGLE 4.x) | |||
* [[:Media:DuckMini-instructions-rev2.0.pdf|Kit instructions Rev. 2.0]] for PCB Rev 2.0 | |||
=== Firmware === | |||
As the ISP interface is sharing pins with the LEDs in this version, the always-on jumper as used in version 1 is no longer possible. Instead, the always-on mode can be activated by holding down the button while inserting the batteries. An automatic power-on when voltage is applied is not possible. | |||
ATtiny804/814 don't support the ISP interface, so the 2x3 pin header becomes useless when using these controllers. In-system programming is still possible by soldering a wire to the unused pin 10 if the controller and connecting it to a UPDI programmer. Of course, ground also has to be connected to the programmer. | |||
The PWM pins are different between ATtiny804/814 and ATtiny84. Pin 6 (PA7/OC0B on ATtiny84) can be set to the PWM signal WO0 with PORTMUX, requiring only a simple register setting at the beginning of the program. On pin 5 (PB2/OC0A on ATtiny84), no PWM signal is available. Instead, the CCL module is used to internally pass the WO1 signal through to LUT1-OUT, which in turn can be output on pin 5. | |||
* [[:Media:Duck-tn84-2022-07-25.zip|Firmware version 2022-07-25]] for ATtiny84 | |||
* [[:Media:Duck-tn84-2022-07-24.zip|Firmware version 2022-07-24]] for ATtiny804 and ATtiny814 | |||
== Version 3.0/3.1 == | |||
=== Hardware === | |||
For version 3, the controller was replaced again, this time with a one-time programmable Padauk PMS152. Both the 14-pin and 16-pin versions can be used, the extra 2 pins are not used. For development, the pin-compatible PFS154 with flash memory is also supported, but the LED outputs have different pin driver strengths, so some LEDs will be brighter than others. With the PMS152, all pins used for the LEDs have the same drive strength. | |||
As the PMS152 provides only 1280 14-bit words of ROM, an additional 24C64 EEPROM is necessary to hold the audio data. Larger EEPROMs can be used for longer audio. The audio format is the same as described in [[DuckEnglish|Duck]], the raw audio file (with a zero byte at the end!) is programmed into the EEPROM starting at address 0. | |||
Version 3.1 fixes two issues with version 3.0: it adds the missing pull-up resistor on the SDA line (SCL is always driven by the microcontroller) and it swaps PB3 & PB4. | |||
* [[:File:DuckMini-rev3.1-schematic.png|Schematic]] (PNG) | |||
* [[:Media:DuckMini-rev3.1.sch|Schematic]] (EAGLE 4.x) | |||
* [[:Media:DuckMini-rev3.1.brd|PCB layout]] (EAGLE 4.x) | |||
* [[:Media:DuckMini-instructions-rev3.0.pdf|Kit instructions Rev. 3.0]] for PCB Rev 3.0 | |||
* [[:Media:DuckMini-instructions-rev3.1.pdf|Kit instructions Rev. 3.1]] for PCB Rev 3.1 | |||
=== Firmware === | |||
The firmware must be assembled with [http://john.ccac.rwth-aachen.de:8000/as/ AS] and programmed with the [https://free-pdk.github.io/ Easy-PDK programmer]. As mentioned above, the version 3.0 boards have a layout error that requires a firmware fix. For these boards only, "PCB_30_FIX" has to be set to 1. | |||
If you hold down the button while inserting batteries, the firmware will enter always-on mode, which disables the power-on/off with the button (quacking still works). If you keep holding the button for 5 seconds, the Duck will enter a test mode in which the LEDs slowly light up in sequence. This mode is useful for checking that everything is soldered correctly and finding mistakes. Both modes can only be left by removing the batteries. | |||
* [[:Media:Duck-pdk-v3.zip|Firmware version 3]] for PMS152 and PFS154 | |||
== Photos == | == Photos == |
Latest revision as of 15:37, 30 March 2024
project overview | |
Year | 2019 |
Number of pixels | 34 |
Grayscales / Colors | 8 grayscales |
Illuminant | SMD LEDs |
Power input | |
Contact person | Arne Rossius |
Project website |
The DuckMini is the SMD version of the THT Duck. The circuit and software are mostly identical. More detailed information about the circuit and software can be found on the Duck project page.
Version 1.0
Hardware
The circuit is identical to the full-size duck except for the microcontroller. For cost reasons, the ATmega8 microcontroller was replaced with an ATtiny88 which is only available in an SMD package. Instead of the loose battery holder for 3 AA cells, this version uses a soldered-down holder for 3 AAA cells on the bottom side of the PCB. It is recommended to also stick a piece of double-sided foam tape (mirror mounting tape) in the corner opposite the battery holder's pins. Above the battery holder, the PCB is just large enough to provide space for the large tantalum capacitor and an ISP pin header.
Instead of using the large battery holder, the PCB also provides a footprint for a CR2032 button cell holder. Due to the lower voltage and the large internal resistance of the button cell, the quacking of the duck will be very quiet and the LEDs will be dimmer, but for a duck without sound which won't be turned on for days at a time, the button cell is still a good option.
- Schematic (PNG)
- Schematic (EAGLE 4.x)
- PCB layout (EAGLE 4.x)
- Kit instructions Rev. 1.1 for PCB Rev 1.0
Firmware
Version 2.0
Hardware
In version 2, the controller was replaced with a 14-pin type, either ATtiny84 or ATtiny804/814 can be used.
The LEDs are now controlled with Charlieplexing, requiring only 7 pins. The transistors have been rewired to an emitter follower configuration, eliminating the need for base resistors and making the arrangement compatible with Charlieplexing. One column of LEDs is selected by driving the corresponding pin high, causing the transistor to supply the LED anodes with voltage, and the cathode pins for all LEDs in that column which should light up are driven low, while the remaining pins remain floating (set to input). This cycles through all 6 columns and repeats (like multiplexing).
- Schematic (PNG)
- Schematic (EAGLE 4.x)
- PCB layout (EAGLE 4.x)
- Kit instructions Rev. 2.0 for PCB Rev 2.0
Firmware
As the ISP interface is sharing pins with the LEDs in this version, the always-on jumper as used in version 1 is no longer possible. Instead, the always-on mode can be activated by holding down the button while inserting the batteries. An automatic power-on when voltage is applied is not possible.
ATtiny804/814 don't support the ISP interface, so the 2x3 pin header becomes useless when using these controllers. In-system programming is still possible by soldering a wire to the unused pin 10 if the controller and connecting it to a UPDI programmer. Of course, ground also has to be connected to the programmer.
The PWM pins are different between ATtiny804/814 and ATtiny84. Pin 6 (PA7/OC0B on ATtiny84) can be set to the PWM signal WO0 with PORTMUX, requiring only a simple register setting at the beginning of the program. On pin 5 (PB2/OC0A on ATtiny84), no PWM signal is available. Instead, the CCL module is used to internally pass the WO1 signal through to LUT1-OUT, which in turn can be output on pin 5.
- Firmware version 2022-07-25 for ATtiny84
- Firmware version 2022-07-24 for ATtiny804 and ATtiny814
Version 3.0/3.1
Hardware
For version 3, the controller was replaced again, this time with a one-time programmable Padauk PMS152. Both the 14-pin and 16-pin versions can be used, the extra 2 pins are not used. For development, the pin-compatible PFS154 with flash memory is also supported, but the LED outputs have different pin driver strengths, so some LEDs will be brighter than others. With the PMS152, all pins used for the LEDs have the same drive strength.
As the PMS152 provides only 1280 14-bit words of ROM, an additional 24C64 EEPROM is necessary to hold the audio data. Larger EEPROMs can be used for longer audio. The audio format is the same as described in Duck, the raw audio file (with a zero byte at the end!) is programmed into the EEPROM starting at address 0.
Version 3.1 fixes two issues with version 3.0: it adds the missing pull-up resistor on the SDA line (SCL is always driven by the microcontroller) and it swaps PB3 & PB4.
- Schematic (PNG)
- Schematic (EAGLE 4.x)
- PCB layout (EAGLE 4.x)
- Kit instructions Rev. 3.0 for PCB Rev 3.0
- Kit instructions Rev. 3.1 for PCB Rev 3.1
Firmware
The firmware must be assembled with AS and programmed with the Easy-PDK programmer. As mentioned above, the version 3.0 boards have a layout error that requires a firmware fix. For these boards only, "PCB_30_FIX" has to be set to 1.
If you hold down the button while inserting batteries, the firmware will enter always-on mode, which disables the power-on/off with the button (quacking still works). If you keep holding the button for 5 seconds, the Duck will enter a test mode in which the LEDs slowly light up in sequence. This mode is useful for checking that everything is soldered correctly and finding mistakes. Both modes can only be left by removing the batteries.
- Firmware version 3 for PMS152 and PFS154
Photos
More photos at http://arne.blinkenarea.org/duck-mini/gallery.htm.