G-code sturen met Arduino UNO

IDE gerelateerde berichten
Berichten: 1
Geregistreerd: 26 Jun 2016, 21:26

G-code sturen met Arduino UNO

Berichtdoor CasperFPV » 26 Jun 2016, 23:23

Hallo allemaal,
Ik ben in het bezit van een 3D printer met een Ramps stijl controller (marlin firmware).
Elke keer als ik iets print moet ik mijn computer aansluiten op mijn printer om hem te starten, zelfs als ik vanaf de SD kaart print (Heb geen LCD).
Ik vind het erg onhandig om telkens weer met een 50 meter lange USB kabel, mijn printer in de werkplaats met mijn computer te verbinden.

Nu wil ik dit probleem dus oplossen met een Arduino UNO. Gewoon een systeem met een schakelaar, als ik er op druk dan start de print.
Ik heb al wat testjes gedaan met een serial terminal en ben er achter gekomen dat er totaal maar 3 strings verzonden worden naar mijn printer.

cpp code
"M21" //SD kaart koppelen
"M23 file.gco" //Bestand selecteren
"M24" //Geselecteerde bestand printen


De oplossing leek mij simpel, de USB kabel van mijn printer verbinden met I/O pin 1 van mijn Arduino UNO, dan Serial.println("M21"); etc sturen maar dat blijkt dus niet te werken. De tx led op mijn UNO gaat niet eens aan.

Weet iemand wat ik hier fout doe?

Als ik die code met een terminal stuur werkt het gewoon, maar zodra ik het met mijn Arduino UNO stuur gebeurd er niets.


Dit is de code die ik had gebruikt om het te testen:
cpp code
const int button = 8;
const int led = 13;
int state;
int count;

void setup(){
count = 0;
digitalWrite(13, LOW);
Serial.begin(115200);
}

void loop(){
state=digitalRead(button);
if(state==HIGH){count=count+1;delay(500);}
if(count==1){Serial.write("M21"); //Initialize SD card
digitalWrite(led, HIGH); delay(500); digitalWrite(led, LOW);} //blink LED
if(count==2){Serial.write("M23 1.gco"); //Select 1.gco
digitalWrite(led, HIGH); delay(500); digitalWrite(led, LOW);
digitalWrite(led, HIGH); delay(500); digitalWrite(led, LOW);} //blink LED
if(count==3){Serial.write("M24"); //Start selected file
digitalWrite(led, HIGH); delay(500); digitalWrite(led, LOW);
digitalWrite(led, HIGH); delay(500); digitalWrite(led, LOW);
digitalWrite(led, HIGH); delay(500); digitalWrite(led, LOW);} //blink LED
if(count>3){
digitalWrite(led, HIGH);}
}

(is het ook mogelijk om de code weer te geven als arduino code op dit forum?)

PS: Dit is mijn eerste post op dit forum.

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: G-code sturen met Arduino UNO

Berichtdoor nicoverduin » 27 Jun 2016, 07:44

USB = geen Serial. Serial wordt over USB verstuurd. Vandaar dat de Marlin print als welke ander USB communicatie bord een speciale interface chip (meestal CH340G of 16U2) hebben. Die maakt de hardware vertaling van USB signalen naar TTL (5V) serieel. Dus als je over de Serial wilt communiceren naar de Marlin zul je de Arduino (Bijv. een Leonardo) als USB master moeten maken. Of aanpassingen moeten maken op de Marlin om direct op de serial te communiceren, buiten de USB om.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: G-code sturen met Arduino UNO

Berichtdoor shooter » 27 Jun 2016, 10:28

ja een goed idee, je kunt die usb omzeilen door de communicatiepinnen aan elkaar te zetten, dus 1 aan 0 en 0 aan 1. Op mijn rover met een shieldje erop zit een schakelaar om of de usb of de shield te gebruiken.
gebruik wel een weerstand ertussen dan kan de stroom nooit uit de hand lopen als er toevallig toch door de usb gekletst word.
paul deelen
shooter@home.nl

Terug naar Arduino IDE

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 18 gasten