Stap 1: 8-bits DAC's en seriële vs Parallel
De TLC7528 is een soort digitaal naar analoog converter (DAC). Het duurt van digitale gegevens (getallen tussen 0 en 255) en een spanning tussen 0 en welke spanning levert u de chip met uitgangen. De uitgangsspanning van de DAC kan worden berekend volgens de volgende vergelijking:
uitgangsspanning van 8 bit DAC = (voedingsspanning) * (Digitaal invoergegevens) / 255
In dit Instructable, zal ik worden voeden van de DAC van de Arduino van gebouwd in 5V levering, zodat de bovenstaande vergelijking kan vereenvoudigd worden tot:
uitgangsspanning van 8 bit DAC = 5V * (Digitaal invoergegevens) / 255
Uit deze vergelijking, kunnen wij zien dat de TLC7528 5V zou uitgang als zij een waarde van 255, 0V ontvangt als zij een waarde van 0 ontvangt, 2.5V als zij een waarde van 127, enzovoort ontvangt. U zult zich afvragen waar de 255 vandaan kwam, dit is een gevolg van de TLC7528 wordt een 8 bit DAC. 8 bit betekent dat de binaire getallen die we naar de DAC sturen kunnen moet niet meer dan 8 cijfers in hen. In binaire, getallen die zijn vertegenwoordigd met 8 cijfers (of minder) bereik in waarde tussen 0 en 255 (in tegenstelling tot de reguliere decimaal cijfer-systeem waar en 8 cijfers variëren van 0 tot 99999999). Zo zijn er 256 mogelijke waarden (0-255) die de 8-bit DAC kunnen ontvangen. Dit kan snel worden berekend uit de onderstaande vergelijking:
2 ^ 8 = 256 mogelijke waarden
Als we een 10 bit DAC gebruikten, dan het 2 ontvangen konden ^ 10 = 1024 verschillende waarden, variërend van 0-1023. Dit betekent dat een 10 bit DAC heeft een hogere resolutie dan een 8 bit DAC. Ondanks dit, heb ik gevonden dat 8 bit DAC's over het algemeen veel nuttiger dan 10 bit DAC's zijn omdat gegevens is gemakkelijker om te slaan en output van de Arduino in 8 bits vorm dan in 10 bits vorm. Bijvoorbeeld, is de gegevens type byte in de Arduino taal voor het opslaan van getal van 8 bits. Als u opslaan een getal van 10 bits wilde, u zou moeten gebruiken een gegevenstype int , maar int gegevenstypen kunnen opslaan van 16-bits getallen, zodat u 6 bits van het geheugen verspillen zou. Daarnaast zijn de pinnen van de Arduino gegroepeerde rapporten samen in clusters van 8 of minder. Op de Uno, de alleen volledige groep van 8 zijn digitale pinnen 0-7, deze groep heet PORTD. Bij het schrijven van Arduino code kunt u gemakkelijk 8 gegevensbits uitvoeren door de Staten van digitale pinnen 0-7 allemaal tegelijk instellen. In de code wordt dit gedaan door een getal van 8 bits te sturen naar PORTD. Bijvoorbeeld:
PORTD = 255;
Hiermee stelt u digitale pinnen 0-7 hoog, is het gelijkwaardig aan het volgende:
digitalWrite(0,HIGH);
digitalWrite(1,HIGH);
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
maar met behulp van het PORTD-opdracht alle pins gelijktijdig ingesteld en is veel sneller. De volgende opdracht stelt digitale pinnen 0-7 laag:
PORTD = 0;
het PORTD opdracht kunt u ook enkele van de hoge pinnen en anderen laag ingesteld. Bijvoorbeeld:
PORTD = 137;
137 in binaire is 10001001, dus verzenden 137 te PORTD wordt ingesteld pin 7 HIGH (omdat het eerste cijfer van het binaire getal is een "1"), 6-4 lage pinnen (want de volgende 3 cijfers zijn "0"), pin 3 HIGH, pinnen 2 en 1 laag, en pin 0 HIGH. U kunt meer lezen over hoe dit op de Arduino website werkt. U kunt zelfs verzenden binaire getallen PORTD, bijvoorbeeld:
PORTD = B10001001;
is gelijk aan het PORTD = 137;
Tot slot zal ik praten over hoe we deze gegevens in de TLC7528. De TLC7528 heet een parallelle DAC. Dit betekent dat alle de gegevens die we de DAC verzenden is verzonden in parallel. 8 bit parallel DAC's hebben acht dataverbindingen tot stand tussen de Arduino en de DAC die alle 8 gegevensbits op hetzelfde moment sturen. Het tegenovergestelde van parallel is seriële, seriële opstellingen u gebruiken minder gegevensverbindingen (meestal drie), maar slechts één bit tegelijk stuur. Dus, heb je om te verzenden een getal van 8 bits via een seriële verbinding verzenden acht 1 bit pakketten, na elkaar, terwijl in parallelle opstellingen kunt u alle 8 bits op hetzelfde moment. Dit betekent dat seriële verbindingen snellere gegevensoverdracht dan parallelle verbindingen vereisen. Bent u niet bezorgd over het gebruik van 8 digitale pinnen van de Arduino, is een parallel 8 bit DAC een goede optie, omdat het vereist minder kloksnelheid en eenvoudiger code is.