Thumbnail image

Project 02 — Tiny

Repost van Tumblr. Sources op github.

Dit is m’n eerste experiment met een microcontroller-chip, de ATtiny85.

breadboard

Op de foto, op de rechter helft van het breadboard zie je de uiteindelijke schakeling van de ATtiny85 die drie LEDs aanstuurt. Op de linker helft zie je een Arduino Nano, inclusief drie controle-LEDs, waarmee de tiny is geprogrammeerd. De Nano is nu losgekoppeld van de tiny. (Bij dit breadboard zijn de powerrails halverwege onderbroken.)

Je kunt de ATtiny85 heel simpel programmeren met een Arduino. In de IDE van Arduino zit hiervoor bij de voorbeelden een kant-en-klare sketch ArduinoISP. Gewoon alles aansluiten volgens de documentatie… wat toch niet vanzelf ging.

Je wordt aangeraden om de Arduino met de tiny te verbinden vanaf de zes ICSP/SPI-pinnen, die je op de Nano rechts ziet. Ik had wel een datasheet van de Nano, waarin ook de zes ICSP/SPI-pinnen staan vermeld in een schema, maar ik had niet door dat dat schema de onderkant van de Nano weergeeft. Ik keek naar de bovenkant, en had daarom de volgorde van de pinnen verkeerd om. Dat werkte dus niet. Omdat ik dit nog niet doorhad heb ik de oude manier van aansluiten gebruikt, via de standaard datapinnen, zoals je op de foto kunt zien. Hiervoor moet je in de sketch USE_OLD_STYLE_WIRING definiëren.

Ook was me niet direct duidelijk wat bedoeld werd met Pin 10 is used to reset the target microcontroller. Niet de fysieke pin 10 van de Arduino, dat was me direct duidelijk. Maar welke dan wel? Bedoeld werd de pin die met D10 is gemarkeerd.

Nadat de sketch ArduinoISP geladen is op de Nano moet je een condensator van 10µF zetten tussen GND (-) en RST (+) van de Arduino. Dit wordt niet vermeld in de documentatie in de sketch, maar moet wel, volgens de diverse video’s hierover die op Youtube zijn te vinden (zoals deze).

Dan, in de Arduino IDE moet je de ATtiny Core installeren. Vervolgens onder Hulpmiddelen de volgens instellingen kiezen:

  • Board: ATtiny25/45/85 (No bootloader)
  • Chip: ATtiny85
  • Clock: 8 MHz (internal)
  • Programmer: Arduino as ISP (ATTinyCore)

Daarna, ook onder Hulpmiddelen kies je Bootloader branden.

Hier ging het bij mij eerst mis. Ik kreeg de gevreesde Device signature = 0x000000 Yikes! Invalid device signature, het signaal dat je iets verkeerd hebt aangesloten. Eenmaal opgelost kun je een sketch uploaden vanuit de Arduino IDE naar de tiny, precies zoals je anders een sketch naar een Arduino stuurt.

Als je klaar bent, en de IDE weer wilt gebruiken om een Arduino te programmeren, dan moet je de instellingen herstellen. Voor de Nano:

  • Board: Arduino Nano
  • Processor: ATmega328P
  • Programmer: AVRISP mkII

Om het gebruik van de tiny te testen wilde ik iets interessanters dan de standaard Blink. De tiny heeft drie pinnen die pulse-width modulation (PWM) ondersteunen. Hiermee kun je LEDs aansturen en de lichtsterkte variëren. Ik heb een sketch gemaakt dat op willekeurige momenten, een willekeurige LED laat oplichten, met een willekeurige lichtintensiteit, waarna de LED langzaam uitdooft.

Voor het normale gebruik van de tiny zit er een pull-upweerstand van 10kΩ op de reset-pin, die je kunt laten zitten tijdens het programmeren. Tussen Vcc en GND zit een condensator van 0.1µF om de spanning te stabiliseren.

De schakeling wordt gevoed met 5 volt, maar blijkt ook op 3 volt te werken, al branden de LEDs dan een stuk zwakker.

reacties

comments powered by Disqus