ATtiny – Solid state relais met tijdinstelling
Getest en geschikt voor: ATtiny13, ATtiny85
Hieronder vind je een voorbeeld om met ATtiny chip en een optocoupler (als soort solid state relais) te schakelen waarbij te tijd instelbaar is.
Programmeren van de ATtiny13
1) Sluit de ATtiny13 aan om te programmeren zoals hier aangegeven.
2) Upload het onderstaande script in de ATtiny.
Het onderstaande script zet de optocoupler aan nadat de ATtiny aan geschakeld is (d.m.v. schakelaar) en uit na een x aantal (milli)seconden.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
int optocouplerpPin = 4; // Pin waarom de optocoupler is aangesloten. int wachtijd = 1000; // wachttijd in ms @ 1Mhz (internal clock) void setup() { pinMode(optocouplerpPin, OUTPUT); // zet en configureer de 'optocouplerpPin' als een uitgang. digitalWrite(optocouplerpPin, HIGH); // Zet de optocoupler AAN door de pin HOOG te maken. delay(wachtijd); // wachttijd. digitalWrite(optocouplerpPin, LOW); // Zet de optocoupler UIT door de pin LAAG te maken. } void loop() { delay(10); } |
Programmeren van de ATtiny45/85
1) Sluit de ATtiny45/85 aan om te programmeren zoals hier aangegeven.
2) Upload het onderstaande script in de ATtiny.
Het onderstaande script zet de optocoupler aan nadat de ATtiny aan geschakeld is (d.m.v. schakelaar) en uit na een x aantal (milli)seconden.
Omdat de ATtiny45/85 “slaap” functies heeft, kan de chip in slaapstand gezet worden om stroom te besparen, zo kan de chip langer mee op een accu/batterij, daarom is dit script iets uitgebrieder dan de ATtiny13 versie.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#include <avr/sleep.h> // Bibliotheek voor slaap functies #ifndef cbi #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) #endif // instellingen int optocouplerpPin = 4; // Pin waarom de optocoupler is aangesloten. int wachtijd = 100; // wachttijd in ms @ 1Mhz (internal clock) void setup() { pinMode(optocouplerpPin, OUTPUT); // zet en configureer de 'optocouplerpPin' als een uitgang. digitalWrite(optocouplerpPin, HIGH); // Zet de optocoupler AAN door de pin HOOG te maken. delay(wachtijd); // wachttijd. digitalWrite(optocouplerpPin, LOW); // Zet de optocoupler UIT door de pin LAAG te maken. // Ga naar slaap modus. cbi(ADCSRA,ADEN); // Zet de A/D converter uit voor stroombesparing. set_sleep_mode(SLEEP_MODE_PWR_DOWN); // zet slaap mode als "complete power-down". sleep_enable(); // zet slaap mode aan. sleep_mode(); // ga in slaap mode. } void loop() { } |
Aansluiten van het schema
Nadat de ATtiny geprogrameerd is, sluit het volgende aan via onderstaand schema:
1) De diode is meegenomen om een spanningsval van 0.4V te krijgen zodat de schakeling tot 6V geschikt is (AVR kan tot 5.5V hebben als maximale spanning)
2) De weerstand van 1Kohm is meegenomen om de stroom te beperken in de optocoupler, anders gaat deze stuk.