Programmare Scheda Sanguinololu

Ciao a tutti sono nuovo ho bisogno del vostro aiuto, dovrei programmare una scheda Sanguinololu colore Verde per comandare esclusivamente 2 motori Nema 17, in parole povere mi servirebbe che la programmazione abbia possibilità di regolare velocità e il senso dei motori..., vi spiego cio che devo fare sto costruendo uno spoolwinder cioè un avvolgitore di bobina per filamento ed al momento viene gestito con 2 motori passo passo,ho letto molte guide sulla scheda Arduino ,ma la programmazione che sulla Sanguinolo può essere eseguita con il software "Arduino" non sono riuscito a comprenderla un gran che anche perchè la scheda ha già incluso i driver ed è possibile collegare sino a 4 Motori poi non so quali pin attivare sulla Sanguinololu...chi mi da una mano? ho letto una base di configurazione per Scheda Arduino Qui :http://www.glgprograms.it/?p=elet/motoridc

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni e a leggere il regolamento: Regolamento - qui una serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections - qui le pinout delle varie schede by xxxPighi: Pinout - qui una serie di link [u]generali[/u] utili: Link Utili

La Sanguinololu è stata progettata da OPEN ELETTRONICS per l'utilizzo con la sua stampante 3D.

In pratica è un ATmega2560 con 4 driver Allegro A4988 per stepper bipolari e tre uscite a MOSFET a drain aperto ed un FT232 per la comunicazione USB con un PC.

La scheda è stata caricata con una versione modificata del software MARLIN, uno dei tanti interpreti G-code.

Nulla vieta, ovviamente, di cambiare la destinazione d'uso della scheda usando solo due stepper, come nel tuo caso, tuttavia mi sembra che sia coma sparare agli uccelli con un cannone!

Ci sono dei motivi particolari che ti spingono ad usare questa scheda?

nid69ita: Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni e a leggere il regolamento: Regolamento - qui una serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections - qui le pinout delle varie schede by xxxPighi: Pinout - qui una serie di link [u]generali[/u] utili: Link Utili

ok presentazione fatta scusate :) ora mi documento un po grazie dei link.

cyberhs: La Sanguinololu è stata progettata da OPEN ELETTRONICS per l'utilizzo con la sua stampante 3D.

In pratica è un ATmega2560 con 4 driver Allegro A4988 per stepper bipolari e tre uscite a MOSFET a drain aperto ed un FT232 per la comunicazione USB con un PC.

La scheda è stata caricata con una versione modificata del software MARLIN, uno dei tanti interpreti G-code.

Nulla vieta, ovviamente, di cambiare la destinazione d'uso della scheda usando solo due stepper, come nel tuo caso, tuttavia mi sembra che sia coma sparare agli uccelli con un cannone!

Ci sono dei motivi particolari che ti spingono ad usare questa scheda?

Ciao Cyber grazie della risposta allo possiedo una stampante 3d (3drag)è possiedo per l'esattezza 2 schede ramps 1.4 e 2 schede sanguinololu 1.2, le 2 ramps mi servono per creare 2 Stampanti prusa i3, 1 Sanguinololu per la stampante in questione(3drag), l'altra Sanguinololu volevo sfruttarla per l'avvolgitore di filamento in quanto mi sono comprato un Filastruder..penso di aver capito che per far ciò che mi serve, questa scheda è sprecata...però al momento volevo provarla a sfruttare...

cyberhs: La Sanguinololu è stata progettata da OPEN ELETTRONICS per l'utilizzo con la sua stampante 3D.

In pratica è un ATmega2560 con 4 driver Allegro A4988 per stepper bipolari e tre uscite a MOSFET a drain aperto ed un FT232 per la comunicazione USB con un PC.

Dalle foto trovate mi sembra piú un ATmega644 che un ATmega2560

Ciao Uwe

Dalle foto trovate mi sembra più un ATmega644 che un ATmega2560

Vero Uwe, ma nell'articolo del buon Boris Landoni si specifica che sulla nuova scheda è stato usato il 2560.

Infatti la scheda attulamente venduta da FUTURA elettronica è il nuovo modello.

Salvodipa, purtroppo non ho dimestichezza con questa scheda, ma da quanto capisco dovresti riprogrammarla modificando il già modificato MARLIN ed usare comandi G-code.

Perché non provi a porre il quesito allo stesso Landoni?

cyberhs: Vero Uwe, ma nell'articolo del buon Boris Landoni si specifica che sulla nuova scheda è stato usato il 2560. Infatti la scheda attulamente venduta da FUTURA elettronica è il nuovo modello.

Esatto, infatti la scheda della 3D Rag, a partire dalla versione 1.1, non è più la Sanguinololu ma una variante basata sul Mega 2560 fatta fare su misura da Futura Elettronica per la 3D Rag.

Salvodipa, purtroppo non ho dimestichezza con questa scheda, ma da quanto capisco dovresti riprogrammarla modificando il già modificato MARLIN ed usare comandi G-code.

Fa prima ad usare direttamente il software Marlin e comandarla direttamente in G-Code come si fa dal pannello di controllo dei software per le 3D per lo spostamento manuale degli assi.

astrobeed: Fa prima ad usare direttamente il software Marlin e comandarla direttamente in G-Code come si fa dal pannello di controllo dei software per le 3D per lo spostamento manuale degli assi.

Quindi basta creare un g-code? ..con i movimenti richiesti? posso caricargli un G-code di movimento "infinito" per pilotaggio degli "assi x ed y" relativamente ai 2 stepper?

salvodipa: posso caricargli un G-code di movimento "infinito" per pilotaggio degli "assi x ed y" relativamente ai 2 stepper?

Sulla scheda non carichi nessun G-code, lo trasmetti da un pc oppure da una apposita board, sempre basata su Arduino, dotata di display lcd e SD, sulla quale carichi il codice da eseguire, una cosa tipo questa.

a ok , quindi non mi resta che creare un g-code e caricarlo, vediamo se riesco grazie dei suggerimenti

questo è un Gcode per un disegno sulla mia stampante generato con Cura

;Generated with Cura_SteamEngine 14.09
; Default start code
G28 ; Home extruder
G1 Z15 F150
M107 ; Turn off fan
G90 ; Absolute positioning
M82 ; Extruder in absolute mode
M190 S100
; Activate all used extruder
M104 T0 S245
G92 E0 ; Reset extruder position
; Wait for all used extruders to reach temperature
M109 T0 S245
;Layer count: 62
;LAYER:-2
;RAFT
G0 F4500 X50.956 Y58.315 Z0.300
;TYPE:SUPPORT
G1 F2100 X66.956 Y58.312 E0.47534
G1 X66.956 Y62.421 E0.59742
G1 X67.518 Y63.097 E0.62353.... continua...fino
1 X98.654 Y77.825 E857.82374
G1 X98.554 Y77.842 E857.82661
G1 F7200 E852.32661
G1 Z13.700
G0 F4500 X98.554 Y77.842 Z17.499
; Default end code
;G1 X0 Y0 Z130 ; Get extruder out of way. Uncomment to use!
M107 ; Turn off fan
; Disable all extruder
G91 ; Relative positioning
T0
G1 E-1 ; Reduce filament pressure
M104 T0 S0
G90 ; Absolute positioning
G92 E0 ; Reset extruder position
M140 S0 ; Disable heated bed
M84 ; Turn steppers off

Domanda se dovessi togliere tutti i comandi superflui tipo asse z, estrusore piano riscaldato ecc pensate possa funzionare?

Hai scelto una strada tortuosissima per una cosa semplicissima, imparerai un sacco di cose se riuscirai a farlo andare in quel modo. Quando non eravate ancora nati (molti di voi) facevo andare i motori stepper con la porta parallela e 4 darlington usando il GwBasic o il VB3, adesso ci impicchiamo con cose enormemente complesse pur di non studiare le più semplici basi di elettronica e informatica.

triac60: Hai scelto una strada tortuosissima per una cosa semplicissima, imparerai un sacco di cose se riuscirai a farlo andare in quel modo. Quando non eravate ancora nati (molti di voi) facevo andare i motori stepper con la porta parallela e 4 darlington usando il GwBasic o il VB3, adesso ci impicchiamo con cose enormemente complesse pur di non studiare le più semplici basi di elettronica e informatica.

ti straquoto ;D , mi sto accorgendo che in quanto novello e meglio che uso una strada più semplice di fatti ho preso la scheda Arduino Mega della ramps 1.4 e sto collegando i drive e motori seguendo questo schema spero sia corretto :roll_eyes: http://www.google.it/imgres?imgurl=http%3A%2F%2Fi61.tinypic.com%2F2s8096e.jpg&imgrefurl=http%3A%2F%2Fforum.arduino.cc%2Findex.php%3Ftopic%3D254422.0&h=842&w=806&tbnid=5vZgF8J8i7POLM%3A&zoom=1&docid=1LCeauZ_qJYFMM&ei=v8l2VOKuPI33O6OSgYAF&tbm=isch&ved=0CGsQMyhEMEQ&iact=rc&uact=3&dur=1401&page=3&start=49&ndsp=30

Decisamente meglio e più economico, puoi pilotare direttamente con la scheda arduino attraverso pulsanti e/o potenziometri o con un pc collegato alla scheda.

triac60: Decisamente meglio e più economico, puoi pilotare direttamente con la scheda arduino attraverso pulsanti e/o potenziometri o con un pc collegato alla scheda.

Aggiornamenti ho preso Arduino Mega 2560 ho collegato i 2 driver il condensatore da 100uF i 2 Motori Nema 17, l'alimentazione il tutto collegato come lo schema precedente,ho caricato anche una programmazione di base presa dal web , mi funziona tutto, posto lo sketch

int motorPin1 = 2;
int motorPin2 = 3;
int delayTime = 4;

void setup() {
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  }

void loop() {
    digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  delay(delayTime);
   digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, HIGH);
  delay(delayTime);
  digitalWrite(motorPin1, HIGH);
  digitalWrite(motorPin2, LOW);
  delay(delayTime);
}

Adesso mi serve il vostro aiuto devo fare in modo che posso invertire la rotazione dei motori ,e che magari la velocità il passo sia diversa tra i 2 motori, Grazie sempre a tutti per il vostro aiuto

Puoi provare con la libreria AccelStepper. --> http://www.airspayce.com/mikem/arduino/AccelStepper/ Download --> http://www.airspayce.com/mikem/arduino/AccelStepper/AccelStepper-1.45.zip

Prova l'esempio DualMotorShield (ricorda di modificare i pin DIR e STEP in base ai collegamenti fatti).

EDIT: Leo ha aggiornato oggi il core per 1248 e 644 per programmare la vecchia Sanguinololu. --> http://www.leonardomiliani.com/2014/aggiornato-il-core-atmega644p1284p-per-lide-1-5-8-di-arduino/ Ma tu hai la versione col 2560?

PaoloP: Puoi provare con la libreria AccelStepper. --> http://www.airspayce.com/mikem/arduino/AccelStepper/ Download --> http://www.airspayce.com/mikem/arduino/AccelStepper/AccelStepper-1.45.zip

Prova l'esempio DualMotorShield (ricorda di modificare i pin DIR e STEP in base ai collegamenti fatti).

EDIT: Leo ha aggiornato oggi il core per 1248 e 644 per programmare la vecchia Sanguinololu. --> http://www.leonardomiliani.com/2014/aggiornato-il-core-atmega644p1284p-per-lide-1-5-8-di-arduino/ Ma tu hai la versione col 2560?

si ho la versione 2560, adesso provo le librerie

ho caricato la libreria è l’esempio ho corretto i pin Dir e Step , mia manca solo il verso non ho compreso quale è il comando per variare il verso di uno dei 2 motori :’( :’(

// DualMotorShield.pde
// -*- mode: C++ -*-
//
// Shows how to run 2 simultaneous steppers
// using the Itead Studio Arduino Dual Stepper Motor Driver Shield
// model IM120417015
// This shield is capable of driving 2 steppers at 
// currents of up to 750mA
// and voltages up to 30V
// Runs both steppers forwards and backwards, accelerating and decelerating
// at the limits.
//
// Copyright (C) 2014 Mike McCauley
// $Id:  $

#include <AccelStepper.h>

// The X Stepper pins
#define STEPPER1_DIR_PIN 5
#define STEPPER1_STEP_PIN 2

// The Y stepper pins
#define STEPPER2_DIR_PIN 6
#define STEPPER2_STEP_PIN 3


// Define some steppers and the pins the will use
AccelStepper stepper1(AccelStepper::DRIVER, STEPPER1_STEP_PIN, STEPPER1_DIR_PIN);
AccelStepper stepper2(AccelStepper::DRIVER, STEPPER2_STEP_PIN, STEPPER2_DIR_PIN);

void setup()
{  
   stepper1.setMaxSpeed(1000);
   stepper1.setSpeed(150);
 
   stepper2.setMaxSpeed(1000);
   stepper2.setSpeed(100);
}

void loop()
{
    stepper1.runSpeed();
    stepper2.runSpeed();
}

Metti la velocità negativa e gira al contrario. :smiley: