Johans AVR-styrda fördröjning av nätspänningstillslag
Postat: 19 oktober 2009, 14:19:22
Äntligen känns det som att jag kan skriva om mitt första projekt sedan jag började här. Egentligen är projektet nästan klart nu, frånsett lite finjustering, åtminstone vad gäller första prototypen.
Problem: Min granne Anders har en koppling som gör att han kan slå på motorvärmaruttaget från bostadshuset. Han arbetar framförallt nätter och väljer att själv manuellt koppla på strömmen dit. Han frågade mig förra vintern om jag kände till någon dosa som fungerade som en automatisk timer, men tvärtom. Han vill att själva motorvärmaren skall gå i ett par timmar innan kupévärmaren slås på. Motorvärmaren har lägre effekt och behöver längre tid för att motorn skall få en bra arbetstemperatur, kupévärmaren har betydligt högre effekt och i längden är det en onödig kostnad om den står på lika lång tid som motorvärmaren behöver vara på. Hans önskemål var två timmar fördröjning, en timme på, sedan av.
Lösning: Jag gissar att många som kan mer om elektronik skulle kunna lösa detta med kanske en 555 och lite annat, men med min bakgrund började jag tänka i andra banor -- relä som jag kan styra med någon liten krets, kanske. Lite senare blev det så att jag började pyssla med Arduino, och där kom möjligheten att skriva ett program som kan styra ett relä precis som jag vill. Det dröjde inte länge innan jag upptäckte att det i princip är lika enkelt (för mig som är van att programmera) att använda en AVR utan Arduino-omgivningen i form av IDE och viss specifik hårdvara.
Jag tänkte mig att det skulle bli något litet, så jag började med en ATtiny 45 (8-pinnars AVR), men det kändes lite dumt att ha ett stort nätaggregat för att strömförsörja en liten AVR och ett relä, därav mina tankar i denna tråd här, där det också finns bilder på en halvfärdig variant av projektet.
Atmels datablad gav mig idéen att passa på att läsa av temperatur med kretsens inbyggda temperatursensor, vilket jag gjorde och beskrev på Arduinoforumet. Denna funktion finns i tiny 45 också, det var det som fick mig att börja labba med det. Jag labbade på Arduino för att enkelt kunna visa mätvärden på en LCD utan att leta upp eller skriva UART-rutiner, och fick det att fungera helt OK. Tyvärr är noggrannheten inte den bästa, och jag har under arbetets gång haft problem med varma komponenter, något som skulle störa avläsningar som sker direkt i AVR-kretsen. Efter lite funderingar i en annan tråd här kopplade jag så in en yttre temperatursensor.
Mitt första µC-försök till detta projekt var baserat på ATtiny 45 på ett litet experimentkort, med spänningsregulator, ISP-kontakt, TIP-120-transistor för att driva reläet,, och ett par LED för att visa relästatus och allmän funktion. När jag kopplade in denna krets till min utvalda väggvårta på 12V blev själva AVR-kretsen stekhet och reläspänningen låg under 5 volt istället för tänkta 12 volt. Min gissning nu i efterhand är att jag kopplade transistorn fel, som emitterföljare, men jag har inte undersökt det så noga.
Nästa försök byggde jag på breadboard först, för att se att det kunde fungera, och nu använde jag en Arduino Pro Mini (5V, 16 MHz, ATmega 328). Det verkade fungera bra på breadboard, så jag byggde en mer permanent variant. Jag gjorde en slags sockel för den på experimentkort, satte transistor, diod och motstånd där också, spänningsregleringen finns inbyggd på Arduinon. När allt var kopplat och klart visade det sig att spänningsregleringen på denna variant blev alldeles för varm, även om tanken var att kretsen skall användas i vinterklimat utomhus.
OK, den minimala spänningsregulatorn på mini:n blir för varm, då bygger jag en alternativ Arduino med kort från Modern Device, deras minsta -- RBBB. Jag satte dit en fullstor 7805, skippade power-LED och reset-knapp, satte UART-stiften i en bättre vinkel och lödde bara på stiftpinnar på de ställen jag behövde dem. Strömkontakten blev en mycket mindre variant också. Fortfarande blev spänningsregulatorn onödigt varm, så det blev en hembyggd kylfläns också.
Kylfläns och resten av bygget får jag beskriva senare, kanske med några av alla bilder jag tog, och definitivt med mina tankar och idéer om utveckling av projektet.
Problem: Min granne Anders har en koppling som gör att han kan slå på motorvärmaruttaget från bostadshuset. Han arbetar framförallt nätter och väljer att själv manuellt koppla på strömmen dit. Han frågade mig förra vintern om jag kände till någon dosa som fungerade som en automatisk timer, men tvärtom. Han vill att själva motorvärmaren skall gå i ett par timmar innan kupévärmaren slås på. Motorvärmaren har lägre effekt och behöver längre tid för att motorn skall få en bra arbetstemperatur, kupévärmaren har betydligt högre effekt och i längden är det en onödig kostnad om den står på lika lång tid som motorvärmaren behöver vara på. Hans önskemål var två timmar fördröjning, en timme på, sedan av.
Lösning: Jag gissar att många som kan mer om elektronik skulle kunna lösa detta med kanske en 555 och lite annat, men med min bakgrund började jag tänka i andra banor -- relä som jag kan styra med någon liten krets, kanske. Lite senare blev det så att jag började pyssla med Arduino, och där kom möjligheten att skriva ett program som kan styra ett relä precis som jag vill. Det dröjde inte länge innan jag upptäckte att det i princip är lika enkelt (för mig som är van att programmera) att använda en AVR utan Arduino-omgivningen i form av IDE och viss specifik hårdvara.
Jag tänkte mig att det skulle bli något litet, så jag började med en ATtiny 45 (8-pinnars AVR), men det kändes lite dumt att ha ett stort nätaggregat för att strömförsörja en liten AVR och ett relä, därav mina tankar i denna tråd här, där det också finns bilder på en halvfärdig variant av projektet.
Atmels datablad gav mig idéen att passa på att läsa av temperatur med kretsens inbyggda temperatursensor, vilket jag gjorde och beskrev på Arduinoforumet. Denna funktion finns i tiny 45 också, det var det som fick mig att börja labba med det. Jag labbade på Arduino för att enkelt kunna visa mätvärden på en LCD utan att leta upp eller skriva UART-rutiner, och fick det att fungera helt OK. Tyvärr är noggrannheten inte den bästa, och jag har under arbetets gång haft problem med varma komponenter, något som skulle störa avläsningar som sker direkt i AVR-kretsen. Efter lite funderingar i en annan tråd här kopplade jag så in en yttre temperatursensor.
Mitt första µC-försök till detta projekt var baserat på ATtiny 45 på ett litet experimentkort, med spänningsregulator, ISP-kontakt, TIP-120-transistor för att driva reläet,, och ett par LED för att visa relästatus och allmän funktion. När jag kopplade in denna krets till min utvalda väggvårta på 12V blev själva AVR-kretsen stekhet och reläspänningen låg under 5 volt istället för tänkta 12 volt. Min gissning nu i efterhand är att jag kopplade transistorn fel, som emitterföljare, men jag har inte undersökt det så noga.
Nästa försök byggde jag på breadboard först, för att se att det kunde fungera, och nu använde jag en Arduino Pro Mini (5V, 16 MHz, ATmega 328). Det verkade fungera bra på breadboard, så jag byggde en mer permanent variant. Jag gjorde en slags sockel för den på experimentkort, satte transistor, diod och motstånd där också, spänningsregleringen finns inbyggd på Arduinon. När allt var kopplat och klart visade det sig att spänningsregleringen på denna variant blev alldeles för varm, även om tanken var att kretsen skall användas i vinterklimat utomhus.
OK, den minimala spänningsregulatorn på mini:n blir för varm, då bygger jag en alternativ Arduino med kort från Modern Device, deras minsta -- RBBB. Jag satte dit en fullstor 7805, skippade power-LED och reset-knapp, satte UART-stiften i en bättre vinkel och lödde bara på stiftpinnar på de ställen jag behövde dem. Strömkontakten blev en mycket mindre variant också. Fortfarande blev spänningsregulatorn onödigt varm, så det blev en hembyggd kylfläns också.
Kylfläns och resten av bygget får jag beskriva senare, kanske med några av alla bilder jag tog, och definitivt med mina tankar och idéer om utveckling av projektet.