Motorstyrning med microcontroller

Planering och tankar kring eventuella framtida projekt.
Plutonium
Inlägg: 60
Blev medlem: 24 februari 2005, 00:04:14
Ort: Essunga station
Kontakt:

Re: Motorstyrning med microcontroller

Inlägg av Plutonium »

StefCon skrev:Verkar som att det blir en Arduino Mega1280 för mig. H-brygga verkar väldigt smidigt alltså... Vad för program är bra när man skriver koden (C)? Ngt som är gratis? Är det lätt att sedan få Arduinokortet att köra programmet?

Tack för alla tips! Jag är inte ensam ägare av rättigheterna för projektet men jag ska se till att posta det vitala.
Du finner mycket information här. Och programet för att programmera arduinon är gratis och det körs i java, dvs det är inte OS styrt. Kör själv det i Slackware utan problem.
StefCon
Inlägg: 8
Blev medlem: 28 januari 2010, 18:08:55

Re: Motorstyrning med microcontroller

Inlägg av StefCon »

Kraven har ökat nu... Motorerna är på 24 volt och säkert upp mot 25-30 A. :S Finns ngn billig lösning? Hittar bara reläer för 500:- på Elfa.
sodjan
EF Sponsor
Inlägg: 43231
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Motorstyrning med microcontroller

Inlägg av sodjan »

Jag har (eller har haft, minns inte riktigt) ett gäng kontaktorer med
24V spole och som i klarade 20A/230V. Kanske de skulle
bryta 25-30 A vid 24V (?).

Hur som, om du är intresserad så kan jag kolla om jag har några
kvar. Det kan ha varit någon som köpte dom i höstas...

Denna tråd har lite länkar till datablad m.m :
http://elektronikforumet.com/forum/view ... =8&t=31675
bearing
Inlägg: 11653
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Motorstyrning med microcontroller

Inlägg av bearing »

Biltema har ett urval av reläer, men de saknar så vitt jag vet dokumentation.
http://www.biltema.se/products/product. ... emId=88081
StefCon
Inlägg: 8
Blev medlem: 28 januari 2010, 18:08:55

Re: Motorstyrning med microcontroller

Inlägg av StefCon »

Vet det där om biltema. Hur mkt brukar ett helljusrelä vara på? 12 volt antar jag men A?
Användarvisningsbild
E85
Inlägg: 1274
Blev medlem: 29 maj 2007, 16:24:19
Ort: Övik

Re: Motorstyrning med microcontroller

Inlägg av E85 »

30..40A oftast.

Kan du berätta lite mer om hur många växlingar du kommer ha under produktens livslängd osv så är det lättare att veta vad ni behöver. Ett tillslag i minuten under ett år med ett relä så är det nog ganska slut på.
ToPNoTCH
Inlägg: 5097
Blev medlem: 21 december 2009, 17:59:48

Re: Motorstyrning med microcontroller

Inlägg av ToPNoTCH »

Borde du inte ha kretsen klar för dig innan du fixar relän.

Exempelvis.
Skall du styra med uC behöver du sannolikt dra ett så pass strömtåligt relä med en transistor.
Tanken är att om du har koll på detta så kanske du kommer fram till vilken spänning relät behöver och kanske vill matcha mot uC'n så du slipper
olika matningar etc etc.
StefCon
Inlägg: 8
Blev medlem: 28 januari 2010, 18:08:55

Re: Motorstyrning med microcontroller

Inlägg av StefCon »

Systemet kommer bara att vara igång på sommaren. Kanske till/från 2 ggr per timme.

Reläer av den storleksordningen tar i princip alltid mer än 40 mA (max ut för µC) för att slå till. I det fallet måste signalen försärkas. H-bryggans uppgift blir att göra om t.ex "011010" till "på" och liknande för av. Hastighetsreglering/pulsning är inte nödvändigt. Just nu lutar det kanske åt 2 dubbla små h-bryggor som bara ampar strömmen och gör om signalen. 2 reläer från lastbil/traktor borde fixa 24 V.

Om man åker till biltema... Finns det datablad på reläerna där eller är det ett lika stort mörker som deras hemsida?
Mindmapper
Inlägg: 7008
Blev medlem: 31 augusti 2006, 16:42:43
Ort: Jamtland

Re: Motorstyrning med microcontroller

Inlägg av Mindmapper »

Om du har 2st relä för riktningsomkoppling så behöver du 2st transistorer mellan MCU och spolen i dessa. Om dessa transistorer ska klara 200mA eller 1A till spolen är ingen stor grej att haka upp sig på. Välj en transistor som klarar en stor ström och så hög spänning som möjligt för ett vettigt pris. Det finns massor!

När du valt riktning slår du till motorsströmmen med en stor transistor som klarar motorströmmen. På det viset behöver reläna aldrig sluta eller bryta motorströmmen. Ett 40A relä borde leva länge under dom förutsättningarna. Datablad eller inte datablad.
Hoffa_
Inlägg: 18
Blev medlem: 2 februari 2010, 01:03:50
Ort: Sollentuna

Re: Motorstyrning med microcontroller

Inlägg av Hoffa_ »

För att öka livslängden på reläkontakterna vid så stora strömmar kan du sätta något kontaktskydd i kopplingen. T ex en RC-länk över kontakterna. Sedan ska du absolut sätta ett skydd över reläspolen, eftersom den ger ifrån sig en spänningsspik med omvänd polaritet när transistorn släpper strömmen till relät. Vanligast är en liten likriktardiod bakvänd över reläspolen. Tyvärr gör den så att relät släpper långsammare, vilket ökar slitaget på kontakterna. Men utan skydd över spolen brinner transistorn efter bara ett fåtal brytningar. Sedan finns det andra varianter med RC-länkar, dubbla dioder, varistorer... Se ELFA-katalogens faktasidor om reläer och om varistorer.

Fast om du bygger som Mindmapper föreslår, då behöver du bara skydda transistorerna som drar reläna, eftersom det bara är vid brytning och slutning av stor ström som kontakterna slits.

Om du väljer H-brygga, tänk på att transistorer, särskilt FET-ar, drar snabbare än de släpper. Om du t ex har haft "uppe"-transistorn dragen och ska släppa den, låt då processorn vänta en liten stund innan du låter den dra "nere"-transistorn i samma ben av H-bryggan. Annars är båda dragna under den lilla tid som "uppe"-transistorn behöver för att släppa. Kortis.
StefCon
Inlägg: 8
Blev medlem: 28 januari 2010, 18:08:55

Re: Motorstyrning med microcontroller

Inlägg av StefCon »

Så här ser det ut i nuläget: http://www.youtube.com/watch?v=zb_4fGJQnkE

Insignaler från fotodioder. Transistorer (2N2222) släpper på en högre spänning till lastbilsreläer (24V) som i sin tur kör motorerna. Gör kopplingschema i morgon. Koden följer nedan. Den ser lite cp ut men kör in den i ett textdokument bara. PS Kommentarerna ska förbättras lite samt att värden i logiska uttryck ska kalibreras ytterligare. Möjligtvis smoothing och sådant. DS.
-----------------------------------------------------------------------------------

Kod: Markera allt

int fotodiod1 = 8;    //kollar signalerna från de fyra fotodioderna
int fotodiod2 = 9;
int fotodiod3 = 3;
int fotodiod4 = 4;
int motor1fwd = 2;    //skickar signalen till motor 1 att gå frammåt
int motor1rev = 3;    //skickar signalen till motor 1 att gå bakåt
int motor2fwd = 8;    //skickar signalen till motor 2 att gå frammåt
int motor2rev = 9;    //skickar signalen till motor 2 att gå bakåt
void setup()
{
pinMode(motor1fwd, OUTPUT);  //definierar output
pinMode(motor1rev, OUTPUT);
pinMode(motor2fwd, OUTPUT);
pinMode(motor2rev, OUTPUT);
}
 void motor1loop()
 {
  int lightLevel1 = analogRead(fotodiod1);      //definierar lightlevel som värdet som avläses från fotodioderna
lightLevel1 = map(lightLevel1, 0, 1, 0, 255);   // mappar värdena lighlevel kan anta beroende på vilka invärden den får 255 = max utsignal
 int lightLevel2 = analogRead(fotodiod2);
lightLevel2 = map(lightLevel2, 0, 1, 0, 255);
int x = lightLevel1 - lightLevel2; // definierar x som skilnaden mellan signalerna från dioderna i horisontalled
  {
  if  (x < -170)                               // loop som utförs till dess att skillnaden mellan signalerna "från horisontaldioderna" är så liten att den kan antas vara försummbar där värdet är frammtaget experimentellt 
  {
   digitalWrite(motor1fwd, HIGH);
   digitalWrite(motor1rev, LOW);
  }
  else if (x > 170)
  {
    digitalWrite (motor1fwd, LOW);
    digitalWrite(motor1rev, HIGH);
  }
  else  
  {
    digitalWrite (motor1fwd, LOW);
    digitalWrite(motor1rev, LOW);
  }
  }
 }
   void motor2loop()
{
   int lightLevel3 = analogRead(fotodiod3);       //definierar lightlevel som värdena den avläser från fotodioderna
lightLevel3 = map(lightLevel3, 0, 1, 0, 255);      // mappar värdena lighlevel kan anta beroende på vilka invärden den får 255 = max utsignal
 int lightLevel4 = analogRead(fotodiod4);
lightLevel4 = map(lightLevel4, 0, 1, 0, 255);
int y = lightLevel3 - lightLevel4;                //definierar y som skillnaden mellan signalerna från fotodioderna i vertikalled
  {
  if  (y < -170)                                   // loop som utförs till dess att skillnaden mellan signalerna från "vertikaldioderna" är så liten att den kan antas vara försummbar där värdet är frammtaget experimentellt
  {
   digitalWrite(motor2fwd, HIGH);
   digitalWrite(motor2rev, LOW);
  }
  else if (y > 170)
  {
    digitalWrite (motor2fwd, LOW);
    digitalWrite(motor2rev, HIGH);
  }
  else 
  {
    digitalWrite (motor2fwd, LOW);
    digitalWrite(motor2rev, LOW);
  }
  }
}
void loop()
{
motor1loop();
motor2loop();
}
Fixat code taggar /adm
danielr112
Inlägg: 8092
Blev medlem: 18 januari 2009, 00:48:24
Ort: Alvesta, Småland

Re: Motorstyrning med microcontroller

Inlägg av danielr112 »

tips

Kod: Markera allt

Du kan använde Code-taggar
StefCon
Inlägg: 8
Blev medlem: 28 januari 2010, 18:08:55

Re: Motorstyrning med microcontroller

Inlägg av StefCon »

Så här blev det till slut:

http://www.youtube.com/watch?v=kb0l-mJcvVE

Fotodioder som användes (Bottnade vid direkt solljus men gick att täckas över med solskyddsfilm): BPW21
Principiellt elschema: http://img52.imageshack.us/img52/990/elschema.png



//StefCon
Skriv svar