Inhoudsopgave:

Generieke Switch Kaper: 3 stappen
Generieke Switch Kaper: 3 stappen

Video: Generieke Switch Kaper: 3 stappen

Video: Generieke Switch Kaper: 3 stappen
Video: How to Control Family Types in Revit with Formula and Random Values 2024, November
Anonim
Generieke Switch Kaper
Generieke Switch Kaper

In dit artikel wordt beschreven hoe u een solid-state microcontroller-apparaat bouwt dat fysieke schakelaars bestuurt. Het is erg goedkoop om te maken (4 $ of zo), ervan uitgaande dat je een microcontroller-programmeur hebt. Het circuit zelf is van triviale complexiteit.

Dit project is heel eenvoudig en omvat geen verbluffende nieuwe technieken. Het zou een goed eerste microcontrollerproject zijn. De broncode van de assembly wordt in dit artikel aan u verstrekt. Ik heb een hele toffe baas op het werk. Soms houden we ervan om praktische grappen met elkaar uit te halen. Helaas voor hem ben ik een wetenschapper. Mijn doel hier is om verschillende apparaten op de werkplek voor korte tijd op mysterieuze wijze aan te zetten. Radio's, luidruchtige printers, zelfs die vervelende muzikale verjaardagskaarten verstopt in een alledaags object. Bovendien is het project een voorbeeld van hoe je met een AVR zwaardere belastingen bestuurt dan de uitgangspinnen zelf aankunnen. Dit is een breed scala aan dingen, omdat de uitgangspinnen je maar een kleine spanning en een zeer beperkte stroom geven. Dit circuit zou kunnen worden uitgebreid met een relais om inderdaad enkele zeer zware belastingen te regelen.

Stap 1: Ontwerp en circuit

Ontwerp en circuit
Ontwerp en circuit

Voor dit project kunt u bijna elke microcontroller, 5v-spanningsregelaar en NPN-transistor gebruiken. Ik gebruikte:

1x ATtiny26L-8PU (~2$) 1x TL780 5v spanningsregelaar (~0.7$) 1x N2222 transistor (~0.07$) 1x 9v batterij, of 12v afstandsbedieningsbatterij om ruimte te besparen… en natuurlijk mijn vertrouwde STK500, nu met ZIF stopcontacten toegevoegd! Het basisontwerp is dit: de microcontroller doorloopt twee timinglussen. Een lange lus om te bepalen wanneer het apparaat moet worden ingeschakeld en een korte lus om te bepalen hoe lang het apparaat moet worden ingeschakeld. Wanneer het tijd is om problemen te veroorzaken, stuurt de microcontroller een logische high-out pin 14 (Least Significant Bit of PORTA). Dit ontsteekt de transistor. Als je de klemmen hebt aangesloten op de draden van een schakelaar, zorgt dit ervoor dat de weerstand over de schakelaar plotseling daalt van zeer hoog naar minder dan 1 ohm, wat voor de meeste apparaten voldoende is om de schakelaar aan te beschouwen. Houd er rekening mee dat transistors ook diodes zijn, dus als het niet werkt… de polariteit van de klemmen is waarschijnlijk verkeerd, verwissel ze! Dit apparaat heeft ook een behoorlijke 9v-batterij nodig, zeg met meer dan 8v potentieel over … behalve dat het niet veel stroom verbruikt. Er zijn veel ongebruikte pinnen, dus je zou ze natuurlijk kunnen gebruiken om meer schakelaars te bedienen voor meer chaos, maar dit was voldoende voor mijn doeleinden. De volgende stap is de broncode die ik heb geschreven om dit ding op gang te krijgen. De standaardlengtes voor de toestanden "aan" en "uit" zijn respectievelijk ongeveer 10 seconden en 13 minuten. Er zijn opmerkingen in de code over hoe u deze waarden kunt wijzigen. Tot slot, excuseer het uitgebreide gebruik van de "nop"-functie (het besteedt een CPU-cyclus die niets doet) om de timers aan te passen. Het is onelegant omdat het de rjmp-functie kan verbreken als je niet voorzichtig bent met hoeveel je gebruikt!

Stap 2: Broncode

BEGIN:

. INCLUSIEF "tn26def.inc"; Definitie bestand. Google ernaar als je een kopie nodig hebt. clr r30 clr r29 clr r28 clr r27 ldi r28, 0b00000000 ldi r27, 0b11111111 ldi r26, 0b00000000 clr r25 uit DDRA, r27 uit PORTA, r28 TIMER: inc r30 nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpi r30, 0b11111111 breq TIMER2 rjmp TIMER TIMER2: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop inc r29 cpi111 r29, nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop inc r25 cpi r25, 0b11111111;Verlaag dit getal om de "off" tijd te verkorten breq FUNC rjmp TIMER FUNC: nop nop cpi r28, 0x00 breq FUNC2 dec r28 clr r30 clr r29 clr r25 out PORTA, r28 rjmp TIMER FUNC2: nop nop inc r28 out PORTA, r28 clr r25 clr r30 clr r29 rjmp TIMER4 np nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nee nop nop nop nop nop nop nop nop cpi r30, 0b11111111 breq TIMER5 rjmp TIMER4 TIMER5: nop nop nop nop nop nop nop nop nop nop nop nop inc r29 cpi r29, 0b11111 111 breq TIMER6 rjmp TIMER4 TIMER6: inclusief r25 cpi r25, 0b00000011; Verhoog dit getal om de "aan" tijd te verhogen breq FUNC rjmp TIMER4

Stap 3: Laatste opmerking

Veel plezier, maar onthoud dat de transistor limieten heeft in termen van hoeveel stroom je er doorheen kunt pompen. Dat betekent geen netspanning! Naast het feit dat het de transistor erg snel zou overbelasten, zal dit apparaat wisselsignalen niet goed regelen… tenzij je de hieronder beschreven modificatie toepast *en* een relais toevoegt:Als je je zorgen maakt over de klempolariteit, sluit dan gewoon een tweede transistor aan met de basisplaat verbonden met dezelfde bron als de eerste transistor, maar met de collector en emitter in de tegenovergestelde configuratie. Op die manier, ongeacht hoe u de klemmen bevestigt, zal een logische high die uit de microcontroller komt altijd de schakelaar "aanzetten". Houd er rekening mee dat de lekstroom in dit systeem voldoende kan zijn om enkele gevoelige schakelaars zoals toetsenbordmatrices te activeren. Mogelijk moet u voor deze toepassing een weerstand in serie toevoegen. Onthoud dat je het doelapparaat van stroom kunt voorzien in plaats van een batterij te gebruiken. Eindelijk… Ik installeerde het apparaat in een oude rekenmachine, het type dat printfuncties heeft. Ik heb de toetsenbordmatrix reverse-engineered met behulp van een paperclip om te bepalen welke IC-pinnen bij aansluiting de papierinvoer zouden veroorzaken, en de juiste pinnen met het apparaat verbonden. Vervolgens heb ik de schakelaar uitgeschakeld waarmee je de afdrukfunctie kunt uitschakelen. Ik beschouw de machine als behoorlijk ondermijnd. Het zet de nogal luidruchtige papierinvoer elke 10 minuten, gedurende 10 seconden, aan wanneer het apparaat aan staat. Het werkte ook goed met het circuit van een van die hyper-onaangename muzikale verjaardagskaarten. Mijn werkplek is nu bizarder!

Aanbevolen: