Bediening van apparaten via de USB-poort van een computer op ATmega8. Apparaten besturen via de COM-poort van de computer

P. VYSOCHANSKY, Rybnitsa, Transnistrië, Moldavië

Er is een computerbesturingsapparaat voor verschillende apparaten, waarvan het diagram wordt getoond in Fig. 1, functioneel vergelijkbaar met die beschreven in, maar wordt aangesloten op de USB-poort van de computer, die (in tegenstelling tot de COM-poort) tegenwoordig in elk van deze aanwezig is. De enige chip in het apparaat is de gewone ATmega8-microcontroller. Dit is noodzakelijk voor het organiseren van de communicatie via de USB-bus. Hoewel het geen speciale hardwaremodule heeft, wordt deze functie softwarematig uitgevoerd.

Weerstand R1, aangesloten tussen de positieve pool van de voeding en de USB D-bus-lijn, schakelt deze over naar de low-speed LS-modus met een wisselkoers van 1,5 Mbit/s, waarmee u computerberichten in software kunt decoderen. Weerstanden R4 en R5 elimineren transiënten die optreden tijdens informatie-uitwisseling, wat de operationele stabiliteit vergroot. Condensator C1 blokkeert impulsruis in het stroomcircuit, wat ook de stabiliteit van het apparaat verbetert. Diodes VD1 en VD2 dienen om de voedingsspanning van de microcontroller te verlagen tot ongeveer 3,6 V - dit is nodig om de niveaus op de USB-bus af te stemmen. Apparaatbesturingssignalen worden gegenereerd aan de uitgangen van RVO-RV5 en RSO, PC1 van de microcontroller. Hoog logisch niveau - spanning is ongeveer 3,4 V. Laag spanningsniveau is bijna nul. Op de uitgangen kunt u apparaten aansluiten die een stroom verbruiken van maximaal 10 mA (van elke uitgang). Als grote stroom- of spanningswaarden vereist zijn, dan zijn de bijpassende knooppunten getoond in Fig. 5 en 6.

Het apparaat werd op een breadboard gemonteerd; er werd geen printplaat ontwikkeld. Er worden MLT-weerstanden gebruikt, condensatoren C2 en SZ zijn hoogfrequente keramische condensatoren, C1 is K50-35 of vergelijkbaar geïmporteerd. Siliciumdiodes met een spanningsval over de kruising van ongeveer 0,7 V.

Het programma voor de microcontroller is ontwikkeld in de Bascom-AVR-omgeving versie 1.12.0.0. Om met de USB-bus te werken, wordt de swusb.LBX-bibliotheek gebruikt, die software-decodering van USB-signalen in realtime uitvoert. De resulterende programmacode uit een bestand met de HEX-extensie moet in het FLASH-geheugen van de microcontroller worden geladen. Voor dit doel werd de programmeur gebruikt in combinatie met het hulpprogramma dat in Bascom-AVR was ingebouwd. De status van de configuratiebits van de microcontroller moet overeenkomen met die weergegeven in Fig. 2.

Wanneer u het apparaat voor de eerste keer op uw computer aansluit, zal het besturingssysteem een ​​nieuw USB HID-compatibel apparaat met de naam "uniUSB" detecteren en de benodigde stuurprogramma's installeren. Na een paar seconden is het apparaat geconfigureerd en klaar voor gebruik. Om ermee te werken, is het UniUSB-programma gemaakt. Het wordt gepresenteerd in twee versies: voor 32-bit (x86) en 64-bit (x64) besturingssystemen van de Windows-familie. De 32-bits versie is getest op de besturingssystemen Windows 98, Windows XP en Windows 7, terwijl de 64-bits versie alleen is getest op Windows XPx64.

Het UniUSB-programma is geschreven in PureBasic-taal (versie 4.31) met behulp van de HIDJJb-bibliotheek met door de gebruiker gedefinieerde functies, die het werken met USB HID-apparaten ondersteunt. Het uiterlijk van het programmavenster wordt getoond in Fig. 3.

In dezelfde map als het uitvoerbare bestand zou er een bestand moeten staan ​​met de naam UniUSB_KOfl.txt of UniCOM_KOfl.txt. De laatste optie is nodig voor compatibiliteit met het UniCOM-programma voorgesteld in . In dit bestand wordt het script opgeslagen voor het besturen van externe apparaten. Wanneer het programma start, worden de gegevens uit het bestand in een tabel in het hoofdvenster geladen en wanneer het werk is voltooid, worden deze in het bestand opgeslagen. Door met de linkermuisknop op tabelcellen te klikken, kunt u hun status wijzigen: 1 - hoog logisch niveau, 0 of leeg - laag logisch niveau.

Om een ​​tabelkolom toe te voegen of te verwijderen, klikt u er met de rechtermuisknop op en selecteert u de gewenste actie in het menu dat verschijnt.

Wanneer u een apparaat op een USB-poort aansluit, zal het programma dit detecteren en de knop > bovenaan het venster op de werkbalk activeren. Als u op deze knop klikt, wordt het proces gestart van het sorteren van de tabelkolommen en het instellen van de uitvoerstatussen die daarin worden aangegeven. Voor meer duidelijkheid zijn de aantallen uitgangen waarop het logische niveau momenteel hoog is ingesteld, links van de tabel gemarkeerd. De zoeksnelheid (tijd in milliseconden tussen overgangen van kolom naar kolom) wordt ingesteld in het veld "Snelheid, ms".

Houd er rekening mee dat het Windows-besturingssysteem multitasking is! Dit betekent dat de processortijd wordt verdeeld over vele processen, soms verborgen voor de gebruiker, die beurtelings worden uitgevoerd, rekening houdend met de prioriteiten die in het systeem zijn ingesteld. Daarom mag u geen grote nauwkeurigheid verwachten bij het handhaven van tijdsintervallen van minder dan 100 ms.

Om even te stoppen met het scrollen door kolommen, gebruik je de JB-knop. Als u er nogmaals op drukt, wordt het zoeken voortgezet vanaf het punt waar het was gestopt. Met de knop ■ stopt u volledig met zoeken door de tabelkolommen. Als de uitwisseling van informatie tussen de computer en het apparaat mislukt of als het apparaat wordt losgekoppeld van de USB-connector van de computer, rapporteert het programma een fout door een overeenkomstig bericht in de statusbalk weer te geven.

Schakelsnelheid

Een COM-poort selecteren

Start- en pauzeknop

(poort inschakelen)

Stopknop

(poort uitschakelen)

Knop voor uitgangsinstelling

Handmatige knoppen

stuuringangen (1, 2, 3)

Knop voor het wissen van tabellen

Help-knop

Afsluitknop

Indicatoren die simuleren

uitvoerbewerking

Tabelraster met waarden

(lege cellen
gelijk aan nul)

Om de belasting in circuits met een constante spanning, bijvoorbeeld 24V, te regelen, kunt u krachtige composiettransistors gebruiken - in ons geval KT829.

Voor het schakelen van 220V wisselstroom kun je het eenvoudigst gebruik maken van de zogenaamde halfgeleider wisselstroomschakelaar. Deze beschikt over een optodriver met aan de ingang een fase-nuldetector die voor galvanische isolatie zorgt.

Om de schakelstroom te verhogen wordt een triac op een radiator gemonteerd. Houd er rekening mee dat in het hoogspanningsgedeelte weerstanden met een vermogen van 0,5 W worden gebruikt.

Vergeet het niet veiligheidsmaatregelen - Terwijl de switch in werking is, mag u geen blootliggende elementen aanraken, en wanneer u onderdelen en draden opnieuw soldeert, koppelt u de switch los van het netwerk.

Het bord is gemaakt van eenzijdige folieprintplaat. Bordformaat 30x25mm. Een jumper is op het bord onder de behuizing van de microschakeling gesoldeerd. Om de microschakeling tijdens het solderen tegen oververhitting te beschermen, wordt een 16-pins paneel voor de microschakeling gebruikt.

Om de uitgangen (LED's) aan te sturen, hoeft het apparaat alleen maar met een 4-aderige kabel op een pc te worden aangesloten. Het snoer is gesoldeerd aan een standaardconnector op de COM-poort - een DB9-socket.

Het +5V-signaal voor de gemeenschappelijke draad van de digitale ingangen wordt uit het apparaatcircuit gehaald. Weerstanden in de digitale ingangslijnen kunnen in de DB9-busbehuizing worden gesoldeerd.

Op digitale ingangen kunt u knoppen, tuimelschakelaars en microschakelaars aansluiten.

Achtergrondinformatie

De basis van het apparaat is de beschikbare 74hc595-chip, een serieel schuifregister met uitgangsvergrendeling. Om deze microschakeling te besturen zijn drie signaallijnen voldoende. In ons geval worden de signalen in het UniCOM-besturingsprogramma geïnitieerd en via de RS-232-interface (COM-poort) uitgegeven. In deze interface worden de lijnen van een 9-pins connector gebruikt als signaallijnen: RTS - 7-pins, DTR - 4-pins en TxD - 3-pins.

Het werkingsprincipe van de 74hc595-chip is het opeenvolgend opnemen van logische signalen van hoog en laag niveau die worden geleverd aan de DS-ingang (14-pins). De registratie vindt plaats door de dalende flank (overgang van logisch 1 naar logisch 0) aan de SH_CP-ingang (pin 11). De uitvoer van de geregistreerde gegevens vindt ook plaats met een dalende flank, maar dan bij de ST_CP-ingang (12e been). Zo verschijnen de niveaus van de laatste acht opgenomen signalen op pinnen 1-7 en 15.

Een hoog signaalniveau aan de uitgangen (pinnen 1-7 en 15) komt overeen met de voedingsspanning van de microschakeling - in ons geval +5 volt, en een laag niveau komt overeen met 0 volt. De uitgangssignalen zijn statisch, d.w.z. ongewijzigd totdat de volgende puls arriveert bij de ST_CP-ingang (12e etappe). Opgemerkt moet worden dat het verlagen van de voedingsspanning tot onder het minimumniveau leidt tot een reset van de uitgangssignalen. Volgens de documentatie voor de microschakeling is de minimale voedingsspanning 2 volt.

De RS-232-interface is gekoppeld aan de 74hc595-microschakeling met behulp van 5,1 V zenerdiodes. Volgens de specificatie voor RS-232 ligt het hoge signaalniveau in het bereik van +3 tot +25V, waardoor we feedback kunnen organiseren met het UniCOM-besturingsprogramma.

Computerbesturingsapparaat
verschillende apparaten, waarvan het diagram wordt getoond in Fig. 1, functioneel vergelijkbaar
beschreven in, maar wordt aangesloten op de USB-poort van een computer, die (in tegenstelling tot
vanaf de COM-poort) is tegenwoordig in elk van hen aanwezig. De enige chip van het apparaat
- een gemeenschappelijke microcontroller ATmega8. Het is noodzakelijk voor de organisatie
USB-buscommunicatie. Hoewel het gespecialiseerde hardware mist
module, deze functie wordt softwarematig uitgevoerd. Weerstand R1 aangesloten tussen
positieve aansluiting van de voeding en de USB D-bus-lijn, brengt deze over naar lage snelheid
LS-modus met een wisselkoers van 1,5 Mbit/s, waarmee u pakketten kunt decoderen
computer programmatisch. Weerstanden R4 en R5 elimineren transiënten
processen die ontstaan ​​tijdens de uitwisseling van informatie, waardoor de stabiliteit van het werk toeneemt.
Condensator C1 blokkeert impulsruis in het stroomcircuit, wat ook verbetert
stabiliteit van het apparaat. Diodes VD1 en VD2 worden gebruikt om de spanning te verlagen
voed de microcontroller op ongeveer 3,6 V - hiervoor is nodig
niveau dat overeenkomt met de USB-bus. Er worden apparaatbesturingssignalen gegenereerd
uitgangen РВ0-РВ5 en PC0, PC1 van de microcontroller. Hoog logisch niveau -
spanning is ongeveer 3,4 V. Laagspanning is bijna nul. Naar de uitgangen
U kunt apparaten aansluiten die een stroom verbruiken van maximaal 10 mA (van elke uitgang).
Als grote stroom- of spanningswaarden vereist zijn, moeten knooppunten worden gebruikt
overeenkomsten getoond in Fig. 5 en 6.

Het apparaat is gemonteerd op een breadboard,
er is geen gedrukte versie ontwikkeld. Er worden MLT-weerstanden en condensatoren C2 en C3 gebruikt -
keramische hoge frequentie, C1 - K50-35 of vergelijkbaar geïmporteerd. Dioden
silicium met een spanningsval over de kruising van ongeveer 0,7 V. Programma voor een microcontroller
ontwikkeld in de Bascom-AVR-omgeving versie 1.12.0.0. Voor USB-busbediening
Er wordt gebruik gemaakt van de swusb.LBX-bibliotheek, die softwarematige signaaldecodering uitvoert
USB in realtime. De resulterende programmacode
uit een bestand met de HEX-extensie moet in het FLASH-geheugen van de microcontroller worden geladen.
Hiervoor werd de programmeur gebruikt in combinatie met de ingebouwde Bascom-AVR
nutsvoorziening. De status van de configuratiebits van de microcontroller moet overeenkomen
getoond in afb. 2. Wanneer u het apparaat voor de eerste keer op de computer aansluit, wordt het besturingssysteem weergegeven
het systeem zal een nieuw USB HID-compatibel apparaat met de naam detecteren
“uniUSB” en installeer de benodigde stuurprogramma’s. Binnen een paar seconden
Het apparaat is geconfigureerd en klaar voor gebruik.

Er is een programma gemaakt om ermee te werken
UniUSB. Het wordt gepresenteerd in twee versies: voor 32-bit (x86) en 64-bit
(x64) besturingssystemen van de Windows-familie. Er is geverifieerd dat de 32-bits versie werkt
in besturingssystemen Windows 98, Windows XP, Windows 7 en 64-bit -
alleen op Windows XP x64. Het UniUSB-programma is geschreven in PureBasic-taal (versie
4.31) met behulp van de HID_lib-bibliotheek met door de gebruiker gedefinieerde functies,
ondersteunt het werken met USB HID-apparaten. Verschijning van het programmavenster
getoond in afb. 3. In dezelfde map moet het uitvoerbare bestand aanwezig zijn
een bestand met de naam UniUSB_Code.txt of UniCOM_Code.txt. De laatste optie is vereist
voor compatibiliteit met het UniCOM-programma voorgesteld in . In dit bestand
Het script voor het besturen van externe apparaten wordt opgeslagen. Wanneer het programma start, worden de data
uit het bestand worden na voltooiing in de tabel in het hoofdvenster geladen
werken worden opgeslagen in een bestand. Door met de linkermuisknop op tabelcellen te klikken, kunt u dit doen
verander hun status: 1 - hoog logisch niveau, 0 of leeg - laag
logisch niveau. Als u een tabelkolom wilt toevoegen of verwijderen, moet u deze gebruiken
klik met de rechtermuisknop en selecteer de gewenste actie in het menu dat verschijnt.

Bij het aansluiten van een apparaat op een USB-poort
het programma zal het detecteren en de knop bovenaan activeren
vensters op de werkbalk. Als u op deze knop klikt, wordt het proces gestart
het doorzoeken van de tabelkolommen en het instellen van de daarin aangegeven uitvoerstatussen. Voor
Voor meer duidelijkheid zijn de uitvoernummers links van de tabel gemarkeerd op
die momenteel op een hoog logisch niveau zijn ingesteld. Snelheid
zoeken (tijd in milliseconden tussen overgangen van kolom naar kolom) is ingesteld
in het veld "Snelheid, ms".

Houd er rekening mee dat het besturingssysteem Windows is
- multitasken! Dit betekent dat de CPU-tijd onder velen wordt verdeeld
soms verborgen voor de gebruikersprocessen die op hun beurt worden uitgevoerd
rekening houdend met de prioriteiten die in het systeem zijn vastgelegd. Verwacht dus niet veel
nauwkeurigheid van het handhaven van tijdsintervallen van minder dan 100 ms. Voor korte termijn
Om het itereren door kolommen te stoppen, gebruikt u de knop Klik er nogmaals op
zal doorgaan met zoeken vanaf het punt waar het gestopt was. De knop stopt volledig met het doorlopen van kolommen
tafels. Als tijdens de uitwisseling van informatie tussen de computer en het apparaat
er een storing optreedt of het apparaat wordt losgekoppeld van de USB-aansluiting van de computer,
het programma rapporteert een fout door de bijbehorende fout weer te geven
bericht.

LITERATUUR

1. Nosov T. Controle van apparaten
via de COM-poort van de computer. - Radio, 2007, nr. 11,0,61,62.

2. Ryzhkov A. Amerikaanse programmeur
AVR- en AT89S-microcontrollers, compatibel met AVR910. - Radio, 2008, nr. 7, p.
28, 29.

Van de redacteur. Programma's voor de microcontroller en computer bevinden zich
op onze FTP-server op ftp://ftp.radio.ru/pub/2011/02/uniUSB.zip

Score 1 Score 2 Score 3 Score 4 Score 5

Een computerbesturingsapparaat voor verschillende apparaten, waarvan het diagram wordt getoond in Fig. 1, wordt aangesloten op de USB-poort van de computer, die tegenwoordig in elk van deze aanwezig is. De enige chip van het apparaat is een gemeenschappelijke microcontroller ATmega8. Het is noodzakelijk voor het organiseren van de communicatie via de bus. USB. Hoewel het geen speciale hardwaremodule heeft, wordt deze functie softwarematig uitgevoerd.

Figuur 1

Weerstand R1, aangesloten tussen de positieve pool van de voeding en de USB D-bus-lijn, schakelt deze over naar de low-speed LS-modus met een wisselkoers van 1,5 Mbit/s, waarmee u computerberichten in software kunt decoderen. Weerstanden R4 en R5 elimineren transiënten die optreden tijdens informatie-uitwisseling, wat de operationele stabiliteit vergroot. Condensator C1 blokkeert impulsruis in het stroomcircuit, wat ook de stabiliteit van het apparaat verbetert. Diodes VD1 en VD2 worden gebruikt om de voedingsspanning van de microcontroller te verlagen tot ongeveer 3,6 V - dit is nodig om de niveaus met de USB-bus te matchen.

Apparaatbesturingssignalen worden gegenereerd op de uitgangen PB0-PB5 en PC0, PC1 van de microcontroller. Hoog logisch niveau - spanning is ongeveer 3,4 V. Laag spanningsniveau is bijna nul. Op de uitgangen kunt u apparaten aansluiten die een stroom verbruiken van maximaal 10 mA (van elke uitgang). Als grote stroom- of spanningswaarden vereist zijn, moeten bijpassende knooppunten worden gebruikt.

Het apparaat is op een breadboard gemonteerd, er is geen printplaat ontwikkeld. Er zijn geen MLT-weerstanden gebruikt, de condensatoren C2 en SZ zijn hoogfrequente keramische condensatoren, C1 is K50-35 of iets dergelijks geïmporteerd. Siliciumdiodes met een spanningsval over de kruising van ongeveer 0,7 V.

Het programma voor de microcontroller is in de omgeving ontwikkeld Bascom-AVR versies 1.12.0.0. Om met de USB-bus te werken, wordt een bibliotheek gebruikt swusb.LBX, dat realtime softwaredecodering van USB-signalen uitvoert. De resulterende programmacode uit een bestand met de HEX-extensie moet in het FLASH-geheugen van de microcontroller worden geladen. De status van de configuratiebits van de microcontroller moet overeenkomen met die getoond in Fig. 2.

Figuur 2

Wanneer u uw apparaat voor de eerste keer op uw computer aansluit, zal het besturingssysteem een ​​nieuw apparaat detecteren USB-VERBORG compatibel apparaat met de naam " uniUSB" en zal de benodigde stuurprogramma's installeren. Na een paar seconden is het apparaat geconfigureerd en klaar voor gebruik. Het UniUSB-programma is gemaakt om ermee te werken. Het is beschikbaar in twee versies: voor 32-bit (x86) en 64-bit (x64) besturingssystemen van de Windows-familie De 32-bits versie is getest in Windows 98, Windows XP en Windows 7-besturingssystemen, en de 64-bits versie is alleen getest in Windows XP x64.

Programma UniUSB geschreven in taal PuurBasis(versie 4.31) met behulp van de bibliotheek met door de gebruiker gedefinieerde functies HID_Lib, ondersteunend werk met USB-VERBORG apparaten. Het uiterlijk van het programmavenster wordt getoond in Fig. 3.

Figuur 3

In dezelfde map als het uitvoerbare bestand zou er een bestand moeten staan ​​met de naam UniUSB_KOfl.txt. In dit bestand wordt het script opgeslagen voor het besturen van externe apparaten. Wanneer het programma start, worden de gegevens uit het bestand in een tabel in het hoofdvenster geladen en wanneer het werk is voltooid, worden deze in het bestand opgeslagen. Door met de linkermuisknop op tabelcellen te klikken, kunt u hun status wijzigen: 1 - hoog logisch niveau, 0 of leeg - laag logisch niveau.

Om een ​​tabelkolom toe te voegen of te verwijderen, klikt u er met de rechtermuisknop op en selecteert u de gewenste actie in het menu dat verschijnt. Wanneer u een apparaat op een USB-poort aansluit, zal het programma dit detecteren en de Start-knop bovenaan het venster op de werkbalk activeren. Als u op deze knop klikt, wordt het proces gestart van het sorteren van de tabelkolommen en het instellen van de uitvoerstatussen die daarin worden aangegeven. Voor meer duidelijkheid zijn de aantallen uitgangen waarop het logische niveau momenteel hoog is ingesteld, links van de tabel gemarkeerd. De zoeksnelheid (tijd in milliseconden tussen overgangen van kolom naar kolom) wordt ingesteld in het veld "Snelheid, ms".

class="eliadunit">

Houd er rekening mee dat het Windows-besturingssysteem multitasking is! Dit betekent dat de processortijd wordt verdeeld over vele processen, soms verborgen voor de gebruiker, die beurtelings worden uitgevoerd, rekening houdend met de prioriteiten die in het systeem zijn ingesteld. Daarom mag u geen grote nauwkeurigheid verwachten bij het handhaven van tijdsintervallen van minder dan 100 ms.

Om het sorteren van kolommen kort te stoppen, gebruikt u de knop "Pauze". Als u er nogmaals op drukt, wordt het zoeken voortgezet vanaf het punt waar het was gestopt. De knop "Stop" stopt het zoeken in de tabelkolommen volledig. Als de uitwisseling van informatie tussen de computer en het apparaat mislukt of als het apparaat wordt losgekoppeld van de USB-aansluiting van de computer, rapporteert het programma een fout door een overeenkomstig bericht in de statusbalk weer te geven.

Bron: Radio nr. 2, 2011

Archief voor het artikel "Lastcontrole via USB-interface"
Beschrijving: Bronteksten van programma's, firmwarebestand van de microcontroller, uniUSB-programma
Bestandsgrootte: 89,3 KB Aantal downloads: 2 773