Följ Black Week på SweClockers
Permalänk

Motorstyrning

HUr skulle jag på ett enkelt sätt kunna styra 2 motorer om jag programerar i C++. Går det att skicka en konstant signal från en pinne till ett relä som då ger ström från ett batteri?

typ såhär.

Pinne--------------| Batteri +
..........................| |
..........................| |
..........................Relä
..........................| |
..........................| |
..........................| Motor
..........................| |
Jordpinne---------| Batteri -

Punkterna är inget bara för att det funkade inge bra utan.

Går detta eller måste man ha någon krets som känner av en puls och sen get ström tills nästa puls kommer?

Jag har Virtual C++ som kompilator.

//Gullefjun

EDIT: lade till punkterna i kopplingschemat det gick inte med mellanslag

Permalänk
Hedersmedlem

Det går med mellanslag om du använder [code][/code].

Dock kan jag inte hjälpa dig med frågan.

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Permalänk
Medlem

ja det går bra...

du kan själv styra över dina portar...
var ett bra tag sedan jag tittade på sånt där.. mene....
du tar reda på adressen till exempelvis din comport...
(står i systemegenskaper)....
sedan använder man nån ganska soft kod som jag inte vet var den finns för att börja styra porten....
sedan väljer du att lägga en etta, eller en nolla på den...
det är skitenkelt, bara det att jag inte minns vad funktionerna hette... =/

men som sagt, var noga med att köra med relä, annars brinner nog moderkortet upp

om du börjar leta efter funktioner som tar upp just detta, så ska jag bara nämna en sak så att du inte går i en fälla...
windows nt (inkl 2k, xp) har inbyggt skydd mot manuell kontroll av sådana typer av portar, därför måste man installera ett hack som stänger av det där skyddet.... men det ska vara lätt att googla fram om jag inte minns fel...

mja... lite lös info... men mja...

Permalänk
Medlem

Alla WinNT baserade windows (XP, 2000, 2003) har ett skydd. Skyddet innebär att inga applikationer som körs som user-level får direktåtkomst till hårdvaran. Dock kan man installera en typ av drivrutin som körs i kernel-mode och sedan accessa genom den. Gjorde själv ett program som läste av en temperatursensor via gameporten för ganska länge sedan. "Drivrutinen" du behöver heter DLPortIO och kan laddas ner gratis, bara googla. Den är ganska lätt att använda om jag inte minns fel, har för mig att det finns exempelkod inkluderat också.

Visa signatur

5D MkII

Permalänk

Jag hittar inget som jag får till. Är det ingen som kan ge ett fungerande konexempel?

Permalänk
Inaktiv

Exempel för DlPortIO:
http://www.cyd.liu.se/users/~ponma190/KrasseLED.zip

Styr åtta lysdioder på paralellporten.

Permalänk

Är det ingen som kan sammanfatta vad som behövs för att skicka en konstant ström över en pinne, för KrassLED var ju inte lätt att sätta sin in i.

Permalänk
Inaktiv

Allmän info här: http://hem.passagen.se/klahr/PARALL.HTM
Exempel för DlPortIO:

DlPortWritePortUchar(888, 0x01); // Sätter datapinne 1 hög DlPortWritePortUchar(888, 0x02); // Sätter datapinne 2 hög DlPortWritePortUchar(888, 0x04); // Sätter datapinne 1&2 hög // etc, etc

Utpinnarna levererar +5V när dom är höga och +0V när dom är låga.

Permalänk

Allt funkar tills jag skall bygga programmet jag får dessa fel:

--------------------Configuration: Styrning - Win32 Debug--------------------
Linking...
Styrning.obj : error LNK2001: unresolved external symbol _outp
Debug/Styrning.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

Styrning.exe - 2 error(s), 0 warning(s)

jag har bara den lilla koden:

#include <conio.h> int main() { outp(0x378,1); for (float b=0;b<40000;b++) ; outp(0x378,0); for (float c=0;c<40000;c++) ; return 0; }

Vilken jag till stor del kopierade från http://hem.passagen.se/klahr/PARALL.HTM.
Är det några funktioner som används som bara finns i borland eller?

Funkade inte då jag försökte använda DlPortWritePortUchar heller.

#include <conio.h> #include <windows.h> #include "Dlportio.h" int main() { DlPortWritePortUchar(888, 0x04); // Sätter datapinne 1&2 hög for (float b=0;b<40000;b++) ; return 0; } }

då får jag dessa fel:

--------------------Configuration: Styrning - Win32 Debug--------------------
Linking...
Styrning.obj : error LNK2001: unresolved external symbol _DlPortWritePortUchar@8
Debug/Styrning.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

Styrning.exe - 2 error(s), 0 warning(s)

Edit: lade dit den sista koden.

Permalänk
Inaktiv

DlPortWritePortUchar ska det vara, inte outp. Du behöver lägga till dlportio.lib till projektet (högerklicka på projektet -> Properties -> Linker -> Input). Skriv in dlportio.lib på raden "Additional Dependencies".

Permalänk
Medlem

Tycker att det verkar mycket riskabelt att koppla ett relä direkt på en pinne i parallellporten om det är så du tänkt. Använd optokopplare för att skydda datorn och en diod över reläspolen för att motverka spikar.

Visa signatur

Vem har bajsat i min termos?

Permalänk
Medlem

Varför ahr du 2 } i slutet på andra kodexemplet?

Visa signatur

Sveriges största guide till tv-serier - http://www.tv-serieguiden.com/

Permalänk

Jag har ingen aning varför det är två } för det skall det inte vara.

Jo en optoomkopplare samt diod blir det nog.

Tack alla för nu fungerar det.

Permalänk

skaffa dig ett industri PLC från Mitshubishi