Stap 17: Elektronica voor nieuwe stappenmotor
De elektronische ingrediënten zijn als volgt:
- Arduino Uno R3, eigenlijk een DCcduino Uno, ~ $6
- Adafruit stappenmotor NEMA 17-200 stappen/rev - 12V 350mA, $14
- Adafruit Motor/Stepper/Servo Shield v2 Kit - v2.3, $20
- Plug-in Power Supply 7.5VDC 400 ma ongereguleerd, $5
- ChronoDot Real Rime klok - v.1 (Adafruit), $18
- Amerikaanse 0.96" I2C IIC seriële 128 X 64 LED OLED LCD Display Module voor Arduino White (Amazon), $14
- 9 mini drukknoppen (eBay), $1
- 1k Potentiometer
- Piëzo-luidspreker
- Kunststof Project vak 6 x 4 x 2,5 inch (MPJA), $5
Samenvatting van de Arduino schets functies:
Het eerste deel van de schets definieert van talrijke globale variabelen en definieert de structuren voor de RTC-klok, de stepper driver, de OLED-display.
De RTC-klok, de stepper schild en de OLED weergeven alle I2C voor communicatie gebruiken. Dat betekent dat er slechts vier draden nodig zijn om elk van deze delen.
De gebruiker kan verschillende bewerkingsmodi controle door middel van 9 drukknoppen.
Wanneer de schets wordt gestart en als het is aangesloten op een computer van de USB-poort, zal het de RTC klok synchroniseren met de klok van de computer. Het moet duidelijk zijn, dat het zinvol is om eerst te controleren dat de klok van de computer is afgestemd op een tijd sever zoals NIST. Nadat de klok is ingesteld, moet de bijbehorende code worden uitgeschakeld, zodat de schets verbroken vanaf de computer uitvoeren kunt.
Vervolgens voert de schets een codesectie in de lus gebruikt om de werkelijke handposities. De mechanische klok draait niet op dit moment. Het wordt nooit uitgevoerd door zelf na een startup (kan worden veroorzaakt door een stroomstoring). Een drukknop is gebruikt voor plaatsing van een cursor soort op het OLED display onder het uur, minuut of tweede. Een tweede knop voorschotten de waarde voor uur, minuut en seconde als gelezen van de werkelijke handposities.
Om te vermijden moetend druk op de knop 'voorschot' vele malen, ik meestal draai de secondenwijzer handmatig aan de 12 uur positie of houden draaien totdat ik een kleine waarde voor de minuut.
Zodra de cijfers zijn ingesteld, een derde knop (geëtiketteerd 'GO') dat deel van de code uitgangen en voert de eenmalige synchronisatie van de handen aan de RTC-klok
Dit wordt gedaan door het berekenen van het aantal stappen die de mechanische klok moet worden gevorderd of achterlijk en loopt de motor in een snelle (en luidruchtige) modus voor de vereiste stappen. Dit kan duren enkele minuten, waardoor de aanpassing niet helemaal juist. Anyway, de verstreken tijd voor de aanpassing wordt gemeten en een tweede aanpassing wordt gemaakt. Nogmaals, de uitvoeringstermijn wordt gemeten en een derde aanpassing wordt uitgevoerd. Met andere woorden, houdt de definitieve aanpassing rekening dat het kost tijd om de dingen te doen.
Na deze etappe zal de wijzers worden gesynchroniseerd met de klok van de RTC.
De RTC-klok, kan terwijl ze zogenaamd nauwkeurig tot binnen een minuut per jaar, uiteindelijk drijven. 2 drukknoppen worden gebruikt om verder of de RTC-klok retard door uurtje (waarschijnlijk alleen gebruikt wanneer we veranderen van standaard naar zomertijd tijd of vice versa. 2 meer knoppen doen hetzelfde voor de minuut. De 2 knoppen voor de seconden zich anders gedragen. Een de seconden wordt ingesteld op nul voor de huidige minuut, anderzijds wordt de seconden ingesteld op nul maar voorschotten van de minuut. Het moet duidelijk dat de mechanische handen kunnen ook opnieuw worden ingesteld. Daarom, nadat de RTC klok is gewijzigd, moet een stop de klok bij fietsen van de macht en gaan al de setup opnieuw.
De normale sectie van de lus uitgevoerd stuurt een reeks stappen eenmaal een seconde naar het opschuiven van de tweede as van 6 graden. Twee foto-interrupters, een kijken naar een enkel gaatje in de schacht encoder schijf, de andere op zoek op 60 gaten, leiden tot twee interrupts. Deze ofwel de 'positie count' weer op nul gezet of verder de graaf elke seconde. Dit heet een incrementele schacht-encoder.
Een een minuut, op de 30 seconden merk, de waarde uit de schacht encoder wordt vergeleken met de klok van RTC en de motor is vertraagd of versneld alleen voor deze tweede. Dit ervoor zorgt dat van sommige kleine onnauwkeurigheid van de eenmalige synchronisatie die veroorzaakt door een fout worden kan als u de handposities opgenomen. Let erop, dat de laatste aanpassing alleen de tweede hand verzorgen.
Zou het mogelijk zijn de eerder betrokken installatie en aanpassing procedures af te schaffen? het antwoord is Ja. Stel dat we alle drie assen voor seconde, minuut en uur met absolute schacht encoders (niet incrementele uitgerust). Gelieve te beseffen dat dit een totaal verschillend ontwerp uit één hier besproken. Dergelijke schacht encoders zou moeten elke 6 beetjes voor de tweede en de minuut en 4 bits voor het uur. Eenvoudige foto interrupters kunnen niet worden gebruikt. Men zou moeten meer complexe optische of magnetische systemen met een totaal van 16 kanalen. Aangezien de Arduino Uno niet hoeft dat veel pinnen input, zou men moeten gebruiken een Arduino Mega of vooraf verwerken de signalen van de encoder met, bijvoorbeeld, digitaal naar analoog omzetters.
Door het gooien van veel van de hardware op het probleem, zou de Arduino-code heel eenvoudig. De code zou nu de werkelijke handposities te allen tijde, zelfs na een stroomstoring en de mechanische klok gesynchroniseerd met de RTC-klok, no matter what kon houden.
Nou, is dit het onderwerp van een toekomstige klok-ontwerp.
De opgenomen bestanden bevatten de Arduino schets en de bijbehorende mediawisselaar collectie.
Opmerkingen over het downloaden van de Arduino schets bestand hieronder:
Wanneer u deze op uw computer opslaat, zal het verschijnen in de map ' downloads ' met een rare naam hebben veel brieven en een bestandsextensie van "Ino". Noem het aan wat ooit u houdt, maar de extensie intact laat.
Als u het bestand met het programma van de Arduino IDE openen, zal het klagen en u vragen of u wilt Maak een nieuwe schets map en verplaats het bestand er. Dat aanvaarden. Helaas, de nieuwe schets map zullen niet ook in je downloadmap. Verplaatsen naar waar u meestal houden uw schetsen. Toch is de schets is waarschijnlijk niet te lopen aangezien bibliotheken ontbreken.
Open het bestand schets (ino) met Windows WordPad (niet Kladblok). U ziet de vijf bibliotheken aan de bovenkant van de schets. De eerste twee zijn inherent aan de Arduino software. De overige drie moet worden geïnstalleerd in de map Bibliotheken
In dat geval ook downloaden (save) het ClockLibaries.zip bestand. Nogmaals, de bestandsnaam bevat een bos van brieven. U kan dat negeren en gewoon pak de drie mappen. Vervolgens verplaatst u deze mappen naar de map van de bibliotheken van je Arduino jongeheer vouwblad.
Nu moet de schets prima uitgevoerd.
De sketch bevat een groot aantal opmerkingen waarin het doel van coderegel beschrijft. Ik doe dit regelmatig in alle mijn schetsen niet alleen met het oog op deze write-up. Wat lijkt duidelijk tijdens het ontwerp mogelijk raadselachtig als u opnieuw de code een jaar later.
De sketch was geschreven, bewerkt en uitvoeren met behulp van de Arduino IDE versie 1.6.2. Het werd ook getest met versie 1.6.8 en schijnt prima uitvoeren. Als u bekend met de Arduino eigenaardigheden bent, weet je hoe bibliotheken verwerkt en waar te zetten uw schetsen. Ik gebruik een nogal onorthodoxe setup waar zowel de schetsen en de extra bibliotheken worden opgeslagen op een bestandsserver. Hetzelfde geldt voor alle gegevensbestanden CorelDraw, VCarve Pro en de CNC-toolpaths is gekoppeld. Desbetreffende bestandsserver is back-up dagelijks op externe schijven. Deze manier, mijn werk is bewaard moet de hoofdcomputer beschadigd raken.