![]() |
![]() |
|
|||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||
|
|
![]() |
|
|
|
|
||||||||||||||||||||||||||||||||
|
|
|
|
|
||||||||||||||||||||||||||||||||||
|
|
ScoopLetters By Joszs |
|
|
||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||
|
|
|
Het idee: Het idee is dus het weergeven van letters cijvers en andere tekens op een oscilloscope met een uC. De uitvoering: Dit kan in de time/div mode of in de x/y mode ik heb in eerste instantie gekozen voor de time/div mode met 2 kanalen Ik wil 2 kanalen gaan gebruiken een voor de onderste en een voor de bovenste helft van de letters over het volle 5V berijk van de uC. Hiermee zijn geen hele letters te vormen (er kunnen stukjes ontbreken of te veel zijn omdat de straal maar op een plaats tegelijk kan zijn en je hem ook niet uit kan zetten) maar het zal wel duidelijk genoeg zijn zodat het goed leesbaar wordt. De Hardware: Ik heb voor een ander project een klein printje met een uC (PIC16F877), een kristal (20MHz of 16MHz gewoon met de hand omwissellen), een reset knop en een programmeer conector gemaakt en die ga ik hier dus ook gebruiken. Verder heb ik nog 2 digitaal naar analoog omzetters nodig (later gebruik ik er maar een maar dat zien jullie dan wel :-) omdat poortA geen volle 8bit beschikbaar heeft en een deel van poortB voor het LVP(Low Voltage Programming) wordt gebruikt blijven dus poortC en poortD over om de D/A omzetters op aan te sluiten. De D/A omzetters bouw ik op uit twee R2R-netwerkjes met 1% metaalfilm weerstanden. Omdat het begin van het signaal voor de scoop niet te herkennen is moet er dus ook een trigger uitgang komen die komt dus op poortA pin 0 (later wordt dit ook nog iets uitgebrijd maar dat zien jullie dan wel :-) De Software: Een heel beeld op de scoop is 10divs lang ik wil minstens 3 letters op het scherm hebben dus dan gebruik ik 3div per letter. Een leter bouw ik op uit een aantal lijnen daar ga ik dus een raster voor gebruiken van 0,1div lang en 1/16 van 5V hoog. Dus een lijn wordt 0,1div lang de lijn wordt opgebouwt uit 16 punten (16 is nou eenmaal een makkelijk getal). De scoop wil ik graag instellen op 1ms/div dus dan is een lijn 100us lang dat zijn dus 500 instructies(op 20 MHz) dus elke 500/16 = 31,25 instructies moet ik 2 nieuwe waarden naar buiten schrijven. Dit is erg hoog gegrepen blijkt als ik bezig ben om de software te schrijven. Ik heb binnen die 31 instructies nog geen eens een waarde berekent. Dus de instellingen worden aangepast de scoop gaat naar 2ms/div dan heb ik dus 62,5 instructies per punt zelft dat haal ik niet en het worden er uiteindelijk 73 Van een maar twee Kanalen: Het volgende probleem: Door dat ik in de software niet genoeg tijd had om de waarde voor 2 kanalen naar buiten te schrijven heb ik dus maar 1 kanaal beschikbaar. Dit ga ik oplossen door de 2 signaalen(van de onder en bovenkant van de letters) na elkaar over het beschikbare kanaal te sturen. Omdat de boven en onderkant van de letters niet over elkaar geschreven moeten worden ga ik een virtuele ground(voor de scoop) gebruiken(poortA pin 1). Die schakel ik hoog zodra de onderste helft van de letters op de uitgang staat zodat het singaal tenopzichte van de scoopground negatief wordt. Nu komt dus de onderste helft onder de bovenste (zoals het hoort dus :-). Running text: De volgende stap is om de text dus ook te laten bewegen (verschuiven naar links). Dit kan door het trigger sigaal te telkens een stukje te verschuiven. Dit is gemakkelijk in de software op te lossen. Nu zitten we nog met het volgende probleem: Door het gebruik van de virtuele ground is het trigger signaal dus niet meer betrouwbaar. Zonder dat het signaal verschoven werdt was het eigenlijk ook al zo maar daar merkte je weinig van. Maar het valt gemakkelijk op te lossen door het toevoeggen van een aantal weerstandjes en condensatortjes. ![]() Meerdere Tekens: Nu zijn er steeds maar 5 tekens te zien. Om het hele ABC te kunnen weergeven ga ik de reset knop (mis)bruiken om over te schakelen naar de volgende letter. Dit is trouwens een handig truukje om andere waarden in te stellen zonder het hoeven toevoegen van extra hardware (vooral tijdens het testen van een schakeling of deel van een programma). De letters: Tot nu toe heb ik dus eigenlijk een programma geschreven die lijnen tekent met de gegevens die in het geheugen staan. Om van die lijnen leters te maken moet ik dus zorgen dat de juiste gegevens in het geheugen staan. Dus moet ik letters van lijnen ontwerpen en omdat ik geen verticale lijnen kan maken plaats ik ze een beetje cursief. Dit ontwerpen heb ik gedaan in AutoCAD ![]() Zelf aan de slag: Met dit artiekel en het schematje en mijn programma moet je deze schakeling vrij makkelijk zelf kunnen maken. Bij koment voordeel van het over een kanaal zenden van het signaal is dat het dus ook werkt op een 1 kanaals oscilloscope. Het kan zijn dat de schakeling rond de trigger niet goed werkt (ik heb hem alleen nog op mijn eigen scoop geprobeert). En mischien moet je deze nog iets aanpassen. Ook de afregeling van de trigger op de scoop komt vrij precies als hij teveel de enekant op staat staan de onderste helft van de letters stil, teveel de andere kant op laat de bovenste helft stil staan. Daar ergens tussen in moeten bijde helften bewegen. Zelf leters/cijvers/tekens maken: nog TODO en verder TODO Bestanden: Draw.zip Draw4 is de definitieve versie en ook redelijk van comentaar voorzien de overige zijn voorlopers(zonder comentaar) voor als je daarin geintreseert bent
|
|
|
|||||||||||||||||||||||||||||||||
|
|
|
|
|
||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||