Forum Indipendente Biciclette Elettriche, Pieghevoli e Utility

Forum Indipendente Biciclette Elettriche, Pieghevoli e Utility
[ Home | Registrati | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Album Fotografico | Download | Links | FAQ |Ricerca Avanzata | le biciclette provate da noi ] mago job
Ultime novità: * per evitare lo spam, l'iscrizione attende l'approvazione degli Amministratori, un po' di pazienza per favore

attenzione che la mail automatica di conferma iscrizione non sempre funziona, provare ad accedere lo stesso o scrivere in amministrazione

* per comunicazioni scrivere a postmaster@jobike.it o contattare uno degli amministratori (job o pixbuster)

* qui tutti i modelli testati da noi a confronto

Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 Discussioni
 Kit e fai da te
 Sensore di pedalata
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
I seguenti utenti stanno leggendo questo Forum Qui c'è:
Pagina Precedente | Pagina Successiva
Autore Discussione Precedente Discussione Discussione Successiva
Pagina: di 3

washer
Utente Medio



212 Messaggi

Inserito il - 29/08/2016 : 21:19:14  Mostra Profilo  Rispondi Quotando
OK, mi pare o mi illudo di seguire ...
Secondo me un controllo di tempo va inserito in tutti i cicli while, inoltre non vedo qual è il comando digitalWrite(potenziometro,LOW) che toglierebbe assistenza, se dopo una mezza pedalata in avanti, pedalassi al contrario.

E così?

const byte potenziometro = 10; // pin a cui collegare il potenziometro

const byte sensore_1 = 11; // pin ingresso sensore di HALL il primo ad essere interessato dal magnete se rotazione corretta

const byte sensore_0 = 12; // pin ingresso sensore di HALL

const byte test = 13; // il led presente su arduino si accende ad ogni passaggio del magnete

const unsigned long T_MAX = 500 ; // espresso in milliSecondi adesso attende 0.5 Sec da tarare in funzione del numero di magneti determina il numero minimo di pedalate

// piu' è alto e maggiore è il tempo prima che si ferma il motore quando smetto di pedalare

unsigned long timer = 0; // salva nella variabile timer il tempo che il magnete tiene attivo il sensore

boolean flag = false; // aggiungo una variabile per stabilire l'ordine di nattivazione dei sensori



void setup() {

Serial.begin(9600); // abilita l'uso della seriale per il debug a soft OK lo si puo eliminare

pinMode(potenziometro, OUTPUT); // configura i pin

pinMode (test, OUTPUT);

pinMode(sensore_1, INPUT);

pinMode(sensore_0, INPUT);



}



void loop() {  

while (digitalRead(sensore_1) == LOW || digitalRead(sensore_0) == LOW || millis() - timer >= T_MAX) { // in attesa dell'attivazione di un sensore o del tempo limite
}
if (digitalRead(sensore_1) == LOW) flag = true;  // flag true se è stato attivato prima sensore_1

while (digitalRead(sensore_1) == LOW && digitalRead(sensore_0) == LOW || millis() - timer >= T_MAX) { // in attesa dell'attivazione di entrambi i sensori o del tempo limite
}
if (millis() - timer >= T_MAX || flag == false) {  

digitalWrite(potenziometro, LOW);

digitalWrite(test, LOW);

}

timer = millis();

digitalWrite(potenziometro, HIGH);

digitalWrite(test, HIGH);

flag = false;

}

Senti che musica! ( Tex Willer )
Torna all'inizio della Pagina

washer
Utente Medio



212 Messaggi

Inserito il - 29/08/2016 : 22:47:57  Mostra Profilo  Rispondi Quotando
no, mannaggia, riscrivo il finale di loop:

void loop() {  

while (digitalRead(sensore_1) == LOW || digitalRead(sensore_0) == LOW || millis() - timer >= T_MAX) { // in attesa dell'attivazione di un sensore o del tempo limite
}
if (digitalRead(sensore_1) == LOW) flag = true;  // flag true se è stato attivato prima sensore_1

while (digitalRead(sensore_1) == LOW && digitalRead(sensore_0) == LOW || millis() - timer >= T_MAX) { // in attesa dell'attivazione di entrambi i sensori o del tempo limite
}
if (millis() - timer >= T_MAX || flag == false)
{  
digitalWrite(potenziometro, LOW);

digitalWrite(test, LOW);

timer = millis();

flag = false;
}

else
{
timer = millis();

digitalWrite(potenziometro, HIGH);

digitalWrite(test, HIGH);

flag = false;
}
}

Senti che musica! ( Tex Willer )
Torna all'inizio della Pagina

Imer
Utente Medio


Piemonte


455 Messaggi

Inserito il - 30/08/2016 : 07:17:04  Mostra Profilo  Rispondi Quotando
Lo detto che mi sfuggiva qualcosa......
ho pensato al passaggio tra i due sensori , ma non al tempo per ricevere il passaggio del prossimo sensore, nel verso giusto.
Devo finire un lavoro, poi mi applico piu' seriamente,devo fare un simulatore altrimenti mi perdo.
Prima di continuare bisogna verificare che si riescano a mantenere attivi due sensori con un magnete, altrimenti perdiamo tempo.
Ciao Imer
Torna all'inizio della Pagina

washer
Utente Medio



212 Messaggi

Inserito il - 30/08/2016 : 20:25:17  Mostra Profilo  Rispondi Quotando
Ti aspetto. Nel frattempo ordino due sensori.
Il mio codice si fa fregare da uno che tiene i sensori entrambi attivi. Forse così no ...
if (digitalRead(sensore_1) == LOW && digitalRead(sensore_2) == HIGH) flag = true;  // flag true se è stato attivato prima sensore_1 e solo lui


Ma poi sarà necessario aspettare un attimino per ripetere il ciclo,
delay()
in fondo a loop?

Senti che musica! ( Tex Willer )
Torna all'inizio della Pagina

Imer
Utente Medio


Piemonte


455 Messaggi

Inserito il - 31/08/2016 : 07:46:49  Mostra Profilo  Rispondi Quotando
Se metti un delay blocchi il programma , bisogna mettere un ciclo while che controlli i millis() trascorsi.
Dammi un momento ieri sera ho fatto un simulatore con arduino , non mi posso mettere la bici sul tavolo di lavoro.

Ciao Imer
Torna all'inizio della Pagina

Imer
Utente Medio


Piemonte


455 Messaggi

Inserito il - 31/08/2016 : 12:25:46  Mostra Profilo  Rispondi Quotando
Per mè questa è la strada giusta, bisogna solo che i sensori siano ad un angolo inferior della meta della distanza tra i magneti.
Vediamo se trovi qualche stupidata.
la libreria leOS2 la devi installare altrimenti non compili , se non sei capace fammi un fischio.
Ciao IMer


#include "leOS2.h"
leOS2 pas;

/* per funzionare i due magneti devono avere una distanza tale che non si attivino assieme */
const byte led = 13;
const byte potenziometro = 12;
const byte sensore_0 = 11;
const byte sensore_1 = 10;
boolean Passaggio = false;
boolean motore = false;
byte statusLed = 1;


void setup() {
pinMode(led, OUTPUT);
pinMode(potenziometro, OUTPUT);
pinMode(sensore_0, INPUT);
pinMode(sensore_1, INPUT);

digitalWrite(led, LOW);
digitalWrite(potenziometro, LOW);
pas.begin();
pas.addTask( attesa, pas.convertMs(10)); // bisogna impostare il tempo max che si ammette tra il pasasggio del magnete sui due sensori
pas.addTask(magnete, pas.convertMs(500)); // bisogna impostare il tempo max tra due magneti
pas.haltScheduler();
}

void loop() {
if (sensore_0 == LOW) { // attende che passi il magnete sul sensore
Passaggio == true;
pas.haltScheduler(); // ferma e riavvia i timer
pas.restartScheduler();
}
if (sensore_1 == LOW && Passaggio == true) { // attende attivazione sensore 1 mentre Passaggio è true vuol dire che pedalo nel verso giusto
motore = true;
digitalWrite(led, HIGH);
digitalWrite(potenziometro, HIGH);
}

if (motore == false) { // Se entro il tempo fissato nel timer magnete non si ripete il ciclo si spengne il motore
pas.haltScheduler();
digitalWrite(led, LOW);
digitalWrite(potenziometro, LOW);
}
}

void attesa() {
motore = false;
}

void magnete() {
Passaggio = false;
}
Torna all'inizio della Pagina

Imer
Utente Medio


Piemonte


455 Messaggi

Inserito il - 31/08/2016 : 12:48:36  Mostra Profilo  Rispondi Quotando
quello scritto sopra puo non funzionare se I tempi sono inferiori ad un certo valore,devo trovare la vecchia libreria.
si puo' provare cosi:

/* per funzionare i due magneti devono avere una distanza tale che non si attivino assieme */
const byte led = 13;
const byte potenziometro = 12;
const byte sensore_0 = 11;
const byte sensore_1 = 10;
const int attesa = 10; // bisogna impostare il tempo max che si ammette tra il pasasggio del magnete sui due sensori
const int magnete = 500; // bisogna impostare il tempo max tra due magneti
boolean Passaggio = false;
boolean motore = false;
unsigned long = tempo;

void setup() {
pinMode(led, OUTPUT);
pinMode(potenziometro, OUTPUT);
pinMode(sensore_0, INPUT);
pinMode(sensore_1, INPUT);

digitalWrite(led, LOW);
digitalWrite(potenziometro, LOW);
}

void loop() {
if (sensore_0 == LOW) { // attende che passi il magnete sul sensore
Passaggio == true;
tempo = millis();
}
if (sensore_1 == LOW && Passaggio == true) { // attende attivazione sensore 1 mentre Passaggio è true vuol dire che pedalo nel verso giusto
motore = true;
digitalWrite(led, HIGH);
digitalWrite(potenziometro, HIGH);
}

if (motore == false) { // Se entro il tempo fissato nel timer magnete non si ripete il ciclo si spengne il motore
pas.haltScheduler();
digitalWrite(led, LOW);
digitalWrite(potenziometro, LOW);
}
if (millis() - tempo >= attesa) {
Passaggio = false;
}
if (millis() - tempo >= magnete) {
motore = false;
}
}
Ciao Imer
Torna all'inizio della Pagina

washer
Utente Medio



212 Messaggi

Inserito il - 31/08/2016 : 21:00:36  Mostra Profilo  Rispondi Quotando
mah ... ora mi perdo un po' ... nel flusso, nella sintassi e anche nell'uso della libreria.
Ho visto solo un 'me' accentato.
Mi leggo https://github.com/leomil72/leOS2 per vedere se ne esco ...

Senti che musica! ( Tex Willer )
Torna all'inizio della Pagina

washer
Utente Medio



212 Messaggi

Inserito il - 02/09/2016 : 22:13:30  Mostra Profilo  Rispondi Quotando
Ferma i buoi! Ammesso che tu, Imer, sia ancora sul carro ...

c'è un intervallo nel quale i sensori sono entrambi LOW:



Son 6-7 mm, su una circonferenza di 370. Con cadenza 120 sono 8 ms.

Si può fare?

Ordino il modulo comunque.

Senti che musica! ( Tex Willer )
Torna all'inizio della Pagina

Imer
Utente Medio


Piemonte


455 Messaggi

Inserito il - 03/09/2016 : 19:44:04  Mostra Profilo  Rispondi Quotando
Son sempre qua !
se ho detto che ti aiuto non abbandono il progetto.
Oggi ho usato la bici elettrica con la moglie, ogni tanto fammi uscire di casa.
vanno bassi assieme o uno prima dell'altro, se è cosi non ci son problemi.
con arduino si posso leggere i microsecondi quindi non dovrebbe essere un problema,
altrimenti c'è ancora un'altra soluzione ma la lasciavo per ultima perché i tempi
diventano un po empirici da calcolare.

Ciao Imer

Torna all'inizio della Pagina

washer
Utente Medio



212 Messaggi

Inserito il - 04/09/2016 : 16:32:10  Mostra Profilo  Rispondi Quotando
Uno prima dell'altro!! Per 6 mm solo uno, per 6 mm entrambi, per 6mm solo l'altro.
Oggi li ho resinati in un unico sensore con quattro fili: + - h1 h2.
Aspetto la scheda ...

Senti che musica! ( Tex Willer )
Torna all'inizio della Pagina

Imer
Utente Medio


Piemonte


455 Messaggi

Inserito il - 04/09/2016 : 21:29:21  Mostra Profilo  Rispondi Quotando
Perfetto allora DEVI riuscirci

Ciao IMer
Torna all'inizio della Pagina

washer
Utente Medio



212 Messaggi

Inserito il - 08/09/2016 : 00:06:37  Mostra Profilo  Rispondi Quotando
Schedina pervenuta.
Il doppio sensore funziona come ideato, con un resistore tra V+ e ciascun OUT. Ho messo 8KOhm, va bene? Come si dovrebbe dimensionare questo componente?
Proverò a giocare coi tempi, che ora, col mio codice, l'assistenza (anzi, la lucina led) va e viene.



Senti che musica! ( Tex Willer )
Torna all'inizio della Pagina

andrea 104KG
Utente Master


Marche


14132 Messaggi

Inserito il - 08/09/2016 : 00:15:17  Mostra Profilo Invia a andrea 104KG un Messaggio Privato  Rispondi Quotando
Questo post assieme a quello della bicicletta creata da zero da washer è la dimostrazione che gli alieni sono tra di noi ...
Torna all'inizio della Pagina

washer
Utente Medio



212 Messaggi

Inserito il - 08/09/2016 : 00:26:45  Mostra Profilo  Rispondi Quotando
Sono un vecchio casinista, non un alieno. Però qui sto bene.

Senti che musica! ( Tex Willer )
Torna all'inizio della Pagina

Imer
Utente Medio


Piemonte


455 Messaggi

Inserito il - 08/09/2016 : 07:31:44  Mostra Profilo  Rispondi Quotando
Non avevo visto ieri sera troppo tardi per mè!, la mia sveglia suona alle 5.30.
La resistenza sull'uscita non serve puoi toglierla se vuoi , al limite abbassala a 1K ,
tanto per proteggere il sensore , in caso di errori.
Se posti il codice vediamo se ti posso aiutare.
Se hai modo di poter far girare i pedali tenendo la bici ferma ,togliendo la catena per
esempio e usando la seriale di arduino si possono monitorare i tempi e capirci qualcosa in piu'.

Dimenticavo se non avevi mai usato arduino complimenti !!!

Ciao Imer
Torna all'inizio della Pagina

Imer
Utente Medio


Piemonte


455 Messaggi

Inserito il - 08/09/2016 : 07:34:59  Mostra Profilo  Rispondi Quotando
Avevo letto male scusami la resistenza è verso positivo non in serie all'uscita, abbassala comunque a 1K.
Diciamo che piu' bassa meno rischi disturbi , ma non si puo' neppure esagerare.
Se mi dai la sigla del sensore magari dai datasheet si vede qual'è la corrente massima.

Ciao Imer
Torna all'inizio della Pagina

washer
Utente Medio



212 Messaggi

Inserito il - 08/09/2016 : 21:46:31  Mostra Profilo  Rispondi Quotando
Chiedermi scusa poi … ieri ho tirato tardi, preso dalla concitazione del gingillo nuovo ...
Prima di affrontare il codice vorrei capire il sensore, purtroppo ormai doppio, avendo io resinato tutto insieme. Non si legge più niente, e nel negozio eBay era solo "Hall sensor" ...

La resistenza è messa così:




Senza, l’uscita del sensore è bassa ed erratica.

Ho stimato a “braccio” (diciamo), che la corrente che vi circola debba essere sensatamente inferiore di quella che passa nel sensore.
Nel sensore ( in ciascun Hall) passano quattro o tre mA, a seconda che sia eccitato o meno, con un resistore 10K aggiungo un assorbimento di 0,5 mA. Con uno da 1K 5 mA ...

La situazione al momento è questa ( lo scarafaggio rosso è il sensore): l’analogico misura la corrente su V+ (che alimenta DUE sensori), e il digitale la tensione su OUT di UN sensore.





Il tutto sembra abbastanza “robusto”. Devo far diverso? Con quale criterio?

Senti che musica! ( Tex Willer )
Torna all'inizio della Pagina

Imer
Utente Medio


Piemonte


455 Messaggi

Inserito il - 10/09/2016 : 11:40:50  Mostra Profilo  Rispondi Quotando
Ciao,
non ho risposto prima perché è due giorni che non riuscivo a connettermi al forum.
Ho dato un'occhiata ai datasheet dei sensori hall quelli che ho visto e a parte uno che bisogna alimentare a 28 V
e ha uno OUT di 1 mA gli altri come corrente minima sono 10 mA sul pin di OUT, quindi penso che sei in sicurezza.
L'unico dubbio è se quello che hai preso è lineare o sull'uscita c'è un trigger.
Se è quello lineare se avvicini la calamita lentamente dovresti vedere l'uscita che varia in funzione della
distanza del magnete dal sensore , se è quello con il trigger raggiunta una certa distanza scatta basso di colpo.
Stupendo il tester ICE 680 R ne ho ancora 2 , ma li tengo nel museo
Con il software ci son problemi ?

Ciao Imer


Torna all'inizio della Pagina

washer
Utente Medio



212 Messaggi

Inserito il - 10/09/2016 : 18:24:44  Mostra Profilo  Rispondi Quotando
Certo ne hai di pazienza ... ho usato "while" con significato capovolto, ... le fesserie sulle aggiunte di correnti ...
Grazie per il supporto.
Il sensore si comporta praticamente ON/OFF.
Il tester è un ricordo di mio padre, e cerco di trattarlo con cura, ma sono contrario alle reliquie. Comunque è uno degli ultimi.
Il codice seguente funziona al banco senza difetti evidenti.
In settimana proverò ad affrontare le mille sfighette "tra il dire e il fare".



/*
  PAS

 Attiva l'assistenza, fornendo al potenziometro alimentazione 5V quando i pedali girano col verso corretto e sufficiente velocità.

 Il circuito:
 * sensore di Hall G collegato al pin 12
 * sensore di Hall W collegato al pin 11
 * resistori 5,7K collegati tra V+ e pin 11 e 12
 * uscita V+ 5V dal pin 10 quando viene attivata l'assistenza.
 * Accende il LED giallo sulla scheda, pin 13, quando viene attivata l'assistenza. 
 * 
 09.09.2016
 by Washer 
  
 */

// costanti: 
const byte sensoreG = 11;     // pin del sensore G
const byte sensoreW =  12;   // pin del sensore W
const byte potenziometro =  10;   // pin dell'uscita al potenziometro
const byte led =  13;   // pin dell'uscita al LED
unsigned long tempoMax = 2000; // imposta a un tot secondi un intervallo di tempo

// variabili:
boolean revR = false;         // variabile per controllare il senso di rotazione
unsigned long tempo = 0; // variabile per controllare i tempi di attivazione dei sensori

void setup() {
  // inizializza i pin led e potenziometro come output:
  pinMode(led, OUTPUT);
  pinMode(potenziometro, OUTPUT);
  // initializza i pin sensoreG e sensoreW come input:
  pinMode(sensoreG, INPUT);
  pinMode(sensoreW, INPUT);
  digitalWrite(potenziometro, LOW);
  digitalWrite(led, LOW);
}

void loop() {

// controlla l'eccitazione del sensoreG:  
  if (digitalRead(sensoreG) == LOW) {     
     revR = true;    
  }

// controlla l'eccitazione del sensoreW:  
  if (digitalRead(sensoreW) == LOW) {     
     revR = false;    
  }

// attende l'eccitazione di entrambi i sensori e revR true:
  
  if (digitalRead(sensoreG) == LOW && digitalRead(sensoreW) == LOW && revR == true) {  
   // se in tempo utile attiva l'assistenza, accende led, resetta tempo:
   if (  millis() - tempo < tempoMax) {   
    digitalWrite(potenziometro, HIGH);
    digitalWrite(led, HIGH);
    tempo = millis();
    revR = false;
   }
  } 
   // se scade il tempo utile taglia l'assistenza, spegne led, resetta tempo:
  if (millis() - tempo > tempoMax){                              
   digitalWrite(potenziometro, LOW);
   digitalWrite(led, LOW);
   tempo = millis();
   revR = false;
   }    
  
}

Senti che musica! ( Tex Willer )
Torna all'inizio della Pagina

Imer
Utente Medio


Piemonte


455 Messaggi

Inserito il - 10/09/2016 : 19:23:02  Mostra Profilo  Rispondi Quotando
Pazienza perché , se non volevo aiutare non ti offrivo il supporto , se risolvi il problema aiuti anche me o altri,
per me il forum è questo spirito di aiuto e collaborazione, ogni uno ci mette del suo e si va avanti.
Il software non mi è chiaro i primi 2 if il sensorrW e sensorG
allora tu confermi l'avvio quando sono tutte e due bassi e hai la costante revR = vera,
se ruoti al contrario la metti falsa in modo che non può accettare la condizione di avvio.

Vediamo se mi è chiaro:
sensorG è il primo che incontra, mette revR = vera
si aspetta che tutte e due vanno bassi per caricare il timer e avviare il motore
a questo punto sono in uscita sul sensorW che lo porto a falso
e a questo punto attendo o il timer a 0 e spengo o di ripetere il ciclo.

Se giro i pedali al contrario attivo sensroW = falso quindi non posso
attivare il motore.

cosi può andare ma non vedo dove usi while vedo solo dei if

L'unico dubbio ma penso che ne sei cosciente sono i 2 secondi, mi sembra troppo alto , quanti magneti ci sono ?

Se l'appetito vien mangiando io ci metterei anche la gestione freni e tensione minima di batteria

Ciao Imer

Torna all'inizio della Pagina

washer
Utente Medio



212 Messaggi

Inserito il - 10/09/2016 : 23:22:40  Mostra Profilo  Rispondi Quotando
Imer ha scritto:


Il software non mi è chiaro: i primi 2 if ...



A rileggermi neanche io mi capisco.
Torno sugli stati che hai suggerito:

/* * magnete

1 1 sensori

*

0 1

*

0 0


*
1 0

*

1 1

*/

Senti che musica! ( Tex Willer )
Torna all'inizio della Pagina

Imer
Utente Medio


Piemonte


455 Messaggi

Inserito il - 11/09/2016 : 07:19:49  Mostra Profilo  Rispondi Quotando
Prova con quello che hai scritto , tanto non rompi nulla.
È un'altro modo di vedere il problema.


Ciao Imer
Torna all'inizio della Pagina

washer
Utente Medio



212 Messaggi

Inserito il - 11/09/2016 : 21:02:04  Mostra Profilo  Rispondi Quotando
Sembra funzionare, ma non mi piace l'idea che il corretto valore di flag per l'attivazione, si basi sui cicli di esecuzione del programma.
Preferisco il tuo approccio a stati.

Con questo codice:
/*
  PAS

 Attiva l'assistenza, fornendo al potenziometro alimentazione 5V quando i pedali girano col verso corretto e sufficiente velocità.

 Il circuito:
 * sensore di Hall G collegato al pin 12
 * sensore di Hall W collegato al pin 11
 * resistori 5,7K collegati tra V+ e pin 11 e 12
 * uscita V+ 5V dal pin 10 quando viene attivata l'assistenza.
 * Accende il LED giallo sulla scheda, pin 13, quando viene attivata l'assistenza. 
 * 
 11.09.2016
 by Washer 
  
 */

// costanti: 
const byte sensoreG = 11;     // pin del sensore G
const byte sensoreW =  12;   // pin del sensore W
const byte potenziometro =  10;   // pin dell'uscita al potenziometro
const byte led =  13;   // pin dell'uscita al LED
unsigned long tempoMax = 1000; // imposta a un tot secondi un intervallo di tempo

// variabili:
boolean errore = false;         // variabile per controllare anomalie nel senso di rotazione o nei tempi
unsigned long tempo = 0; // variabile per controllare i tempi di attivazione dei sensori
byte passo =  0;        // variabile per controllare la sequenza di attivazione dei sensori

void setup() {
  // inizializza i pin led e potenziometro come output:
  pinMode(led, OUTPUT);
  pinMode(potenziometro, OUTPUT);
  // initializza i pin sensoreG e sensoreW come input:
  pinMode(sensoreG, INPUT);
  pinMode(sensoreW, INPUT);
  digitalWrite(potenziometro, LOW);
  digitalWrite(led, LOW);
}

void loop() {
 tempo = millis();
 while (digitalRead(sensoreG) == HIGH && digitalRead(sensoreW) == HIGH && millis() - tempo < tempoMax ){ // stato iniziale con entrambi i sensori diseccitati
  passo = 0;
  errore = false;  
 }
 while (digitalRead(sensoreG) == LOW && digitalRead(sensoreW) == HIGH && millis() - tempo < tempoMax ){ // controlla l'esecuzione del primo passo della sequenza di attivazione in tempo utile
  if (millis() - tempo > tempoMax){
  errore = true;
  }
  else {
    if (passo == 0 || passo == 1){
     passo = 1; 
   }
    else {
     errore = true;
    }
  } 
 }
 while (digitalRead(sensoreG) == LOW && digitalRead(sensoreW) == LOW && millis() - tempo < tempoMax ){ // controlla l'esecuzione del secondo passo della sequenza di attivazione in tempo utile
  if (millis() - tempo > tempoMax){
  errore = true;
  }
  else {
    if (passo == 1 || passo == 2){
     passo = 2; 
   }
    else {
     errore = true;
    }
  } 
 }          
 while (digitalRead(sensoreG) == HIGH && digitalRead(sensoreW) == LOW && millis() - tempo < tempoMax ){ // controlla l'esecuzione del terzo passo della sequenza di attivazione in tempo utile
  if (millis() - tempo > tempoMax){
  errore = true;
  }
  else {
    if (passo == 2 || passo == 3){
     passo = 3; 
   }
    else {
     errore = true;
    }
  } 
 }    


if (passo == 3 && millis() - tempo < tempoMax  && errore == false){ // attiva assistenza e accende led se la sequenza di attivazione è stata eseguta correttamente in tempo utile
  digitalWrite(led, HIGH);
  digitalWrite(potenziometro, HIGH);
  //passo = 0;
 }
else {  // toglie assistanza e spegne led se sequenza non corretta o oltre tempo limite
  digitalWrite(led,LOW);
  digitalWrite(potenziometro, LOW);
}
}


... ottengo :


Senti che musica! ( Tex Willer )
Torna all'inizio della Pagina

Imer
Utente Medio


Piemonte


455 Messaggi

Inserito il - 12/09/2016 : 12:06:13  Mostra Profilo  Rispondi Quotando
Direi che ci sei ,adesso devi installarlo e li avrai la prova del nove.
Il mio unico dubbio è se usi un magnete solo, il tempo sarà alto di
conseguenza lo spegnimento perchè smetti di pedalare avverra dopo "molto" tempo.


Ciao Imer

Torna all'inizio della Pagina

washer
Utente Medio



212 Messaggi

Inserito il - 12/09/2016 : 20:07:24  Mostra Profilo  Rispondi Quotando
Ci sono cinque magneti sulla circonferenza. Il tempo sarà settato sui risultati pratici, ma credo che non sia critico, con l'acceleratore a manopola. Come pure la gestione dei freni.
Ovviamente l'appetito sale ...




Senti che musica! ( Tex Willer )
Torna all'inizio della Pagina

Imer
Utente Medio


Piemonte


455 Messaggi

Inserito il - 12/09/2016 : 21:16:12  Mostra Profilo  Rispondi Quotando
Dai che sta venedo fuori qualcosa di carino,
tu che all'inzio non mi sembravi molto convinto.
Se vai avanti cosi ti fai la centralina completa .
Se vuoi integrare i freni conviene usare interrupts(),
ti svincoli dal programma principale , stai attento che
non tutti i pin si possono usare devi far riferimento
al tipo di arduino che usi.


topic OFF
Una domanda ma come lo alimenti arduino ?
Io ho fatto delle prove con il mio sensore di cambiata,
ma ho problemi di alimentazione, la tensione che prelevo
dalla centralina del bafang è gia bassa di suo e con il motore
a vuoto funziona bene, ma come il motore va a carico (appoggio
la ruota a terra) mi manda in reset il micro per tensione bassa.
Sto cercando uno step-down che sopporti 50V e che riesca ad essere infilato nella base della batteria.

Ciao Imer
Torna all'inizio della Pagina

washer
Utente Medio



212 Messaggi

Inserito il - 12/09/2016 : 22:47:11  Mostra Profilo  Rispondi Quotando
Sono contento di aver seguito il tuo consiglio.
Guarderò gli interrupts per prendere sonno, ma con l'acceleratore a manopola i freni possono stare dove sono.

Al momento alimento solo da USB. Al banco. Dalla mia centralina è improponibile.
Dimmi se trovi lo step down, io ho pensato a LM317.
La schedina mi consuma 22 mA, è un consumo piuttosto costante, o varia parecchio a seconda dell'impegno?

Senti che musica! ( Tex Willer )
Torna all'inizio della Pagina

Imer
Utente Medio


Piemonte


455 Messaggi

Inserito il - 13/09/2016 : 12:10:07  Mostra Profilo  Rispondi Quotando
Se non usi il led di segnalazione del pin 13 ci togli 5/10 mA.
Per lo step-down sto guardando , non ho voglia di fare lo stampato
e tutto il resto.
Con che tensione entri ?
Ciao Imer
Torna all'inizio della Pagina

Imer
Utente Medio


Piemonte


455 Messaggi

Inserito il - 13/09/2016 : 19:07:04  Mostra Profilo  Rispondi Quotando
io ho comprato 2 di queste:
http://www.ebay.it/itm/LM2596-HV-DC-DC-Step-Down-Adjustable-Power-Supply-Module-5V-12V-60V-A24-/321760303952?var=&hash=item4aea689b50:m:mvBtzBm0zhJVIif8L5yWs-w

stai attento perché alcuni hanno i condensatori bassi di isolamento e non superano i 50 V.


Ciao Imer
Torna all'inizio della Pagina

washer
Utente Medio



212 Messaggi

Inserito il - 13/09/2016 : 21:17:05  Mostra Profilo  Rispondi Quotando
Grazie.
Vado a 10s

Senti che musica! ( Tex Willer )
Torna all'inizio della Pagina

washer
Utente Medio



212 Messaggi

Inserito il - 15/09/2016 : 20:53:50  Mostra Profilo  Rispondi Quotando
Girellando per Arduino Reference, scopro che si possono abilitare i suoi resistori di pull up e che forse posso eliminare le resistenze sul sensore ...

https://www.arduino.cc/en/Reference/PinMode


Senti che musica! ( Tex Willer )
Torna all'inizio della Pagina

Imer
Utente Medio


Piemonte


455 Messaggi

Inserito il - 15/09/2016 : 21:22:00  Mostra Profilo  Rispondi Quotando
Si lo puoi fare.
Devi stare attento che tutto sia a 5V.
Arduino ti ha stregato, vedo ti stai immergendo
Ma lo hai montato l' ArduPas sulla bici?
Ciao Imer
Torna all'inizio della Pagina

washer
Utente Medio



212 Messaggi

Inserito il - 15/09/2016 : 21:51:12  Mostra Profilo  Rispondi Quotando
Fatto, funziona.

pinMode(sensoreG, INPUT_PULLUP);
pinMode(sensoreW, INPUT_PULLUP);


E via anche i resistori esterni.

Sono al banco, la bici sta facendo i suoi 8 km/die con un interruttore sulla catena. Aspetto lo step down per poi inscatolare il tutto in maniera non provvisoria.

Comunque sì, mi son preso una cotta.

Senti che musica! ( Tex Willer )
Torna all'inizio della Pagina

Imer
Utente Medio


Piemonte


455 Messaggi

Inserito il - 16/09/2016 : 07:24:24  Mostra Profilo  Rispondi Quotando
Se vuoi puoi fare l'ingresso di arduino in questo modo , cosi puoi essere piu' elastico con le tensioni di ingresso.

Immagine:

526,13 KB

Scusate la dimensione ma con windows no riesco a ridimensionare.

Ciao Imer
Torna all'inizio della Pagina

Ibla
Utente Master



Sicilia


8532 Messaggi

Inserito il - 16/09/2016 : 10:07:30  Mostra Profilo Invia a Ibla un Messaggio Privato  Rispondi Quotando
Beh!Almeno questo sono riuscita a... decriptarlo!

Immagine:

107,73 KB

“Bisogna essere intelligenti per venire a Ibla….ci vuole una certa qualità d’anima, il gusto per i tufi silenziosi e ardenti, i vicoli ciechi, le giravolte inutili, le persiane sigillate su uno sguardo che spia: ma anche si pretende la passione per le macchinazioni architettoniche, dove la foga delle forme in volo nasconde fino all’ultimo il colpo di scena della prospettiva bugiarda. Ibla è città che recita a due voci insomma. Talvolta da un podio eloquente, più spesso a fior di labbra, in sordina, come conviene a una terra che indossa il suo barocco col ritegno di una dama antica”. (Gesualdo Bufalino, La Luce e il Lutto)

La vita è come una bicicletta con dieci velocità. La maggior parte di noi ha marce che non userà mai.
Linus, in Charles M. Schulz, Peanuts, 1950/2000


...La tempesta
primaverile scuote d'un latrato
di fedeltà la mia arca, o perduti. (L'Arca di E.Montale).

Modificato da - Ibla in data 16/09/2016 10:08:30
Torna all'inizio della Pagina

Imer
Utente Medio


Piemonte


455 Messaggi

Inserito il - 16/09/2016 : 12:30:17  Mostra Profilo  Rispondi Quotando
Grazie
Torna all'inizio della Pagina

washer
Utente Medio



212 Messaggi

Inserito il - 16/09/2016 : 21:39:12  Mostra Profilo  Rispondi Quotando
Al momento son messo così. Funziona.



Senti che musica! ( Tex Willer )
Torna all'inizio della Pagina

Ibla
Utente Master



Sicilia


8532 Messaggi

Inserito il - 17/09/2016 : 12:35:02  Mostra Profilo Invia a Ibla un Messaggio Privato  Rispondi Quotando

“Bisogna essere intelligenti per venire a Ibla….ci vuole una certa qualità d’anima, il gusto per i tufi silenziosi e ardenti, i vicoli ciechi, le giravolte inutili, le persiane sigillate su uno sguardo che spia: ma anche si pretende la passione per le macchinazioni architettoniche, dove la foga delle forme in volo nasconde fino all’ultimo il colpo di scena della prospettiva bugiarda. Ibla è città che recita a due voci insomma. Talvolta da un podio eloquente, più spesso a fior di labbra, in sordina, come conviene a una terra che indossa il suo barocco col ritegno di una dama antica”. (Gesualdo Bufalino, La Luce e il Lutto)

La vita è come una bicicletta con dieci velocità. La maggior parte di noi ha marce che non userà mai.
Linus, in Charles M. Schulz, Peanuts, 1950/2000


...La tempesta
primaverile scuote d'un latrato
di fedeltà la mia arca, o perduti. (L'Arca di E.Montale).
Torna all'inizio della Pagina

Imer
Utente Medio


Piemonte


455 Messaggi

Inserito il - 17/09/2016 : 18:52:13  Mostra Profilo  Rispondi Quotando
Ok,
se ci sono problemi legati ai disturbi prova come ho indicato,
o proviamo con un paio di condensatori.
Rimango in tremante e trepidante attesa di sapere se funziona
Ciao Imer
Torna all'inizio della Pagina

washer
Utente Medio



212 Messaggi

Inserito il - 17/09/2016 : 23:15:14  Mostra Profilo  Rispondi Quotando
Mi hai messo sbrescia, domani lo istallo. Prenderò 3s dai paralleli della batteria.
Il codice si può sfoltire, dallo stato iniziale, con entrambi i sensori diseccitati, sono sufficienti i due passi successivi.

Senti che musica! ( Tex Willer )
Torna all'inizio della Pagina

Eze73
Utente Medio




435 Messaggi

Inserito il - 17/09/2016 : 23:44:12  Mostra Profilo Invia a Eze73 un Messaggio Privato  Rispondi Quotando
andrea 104KG ha scritto:

Questo post assieme a quello della bicicletta creata da zero da washer è la dimostrazione che gli alieni sono tra di noi ...


gia'...fortuna ogni tanto qualche immagine e video( comunque per me incomprensibili) ...

io c ero...
Torna all'inizio della Pagina

washer
Utente Medio



212 Messaggi

Inserito il - 18/09/2016 : 21:50:33  Mostra Profilo  Rispondi Quotando

macchè, la fortuna del principiante mi ha abbandonato ... Al caricamento dell'ultimo codice la scheda ha smesso di funzionare e comunicare.

avrdude: stk500_getsync(): not in sync: resp=0x00

Metto su un disco che è meglio ...

Senti che musica! ( Tex Willer )
Torna all'inizio della Pagina

Imer
Utente Medio


Piemonte


455 Messaggi

Inserito il - 19/09/2016 : 07:10:38  Mostra Profilo  Rispondi Quotando
Cosa hai comnbinato ?

Ciao Imer



Torna all'inizio della Pagina

washer
Utente Medio



212 Messaggi

Inserito il - 19/09/2016 : 21:29:32  Mostra Profilo  Rispondi Quotando
Boh?
Ho messo codici a muzzo per una settimana, senza problemi, ma ieri ha smesso di comunicare col PC.
Ho provato vari balletti sul tasto reset senza esito. I numerosi post sul web per il mio errore, prevedono che la tappa successiva sia ricaricare il bootloader.
Prima di buttare la scheda.
Concordi?

Senti che musica! ( Tex Willer )
Torna all'inizio della Pagina

Imer
Utente Medio


Piemonte


455 Messaggi

Inserito il - 20/09/2016 : 11:44:52  Mostra Profilo  Rispondi Quotando
Si il problema è la comunicazione.
Puoi ricaricare il bootloader usando un altro arduino.
Prima farei la prova a vedere se comunica su un'altro pc se ne hai la
possibilita.

Ciao Imer
Torna all'inizio della Pagina

Ibla
Utente Master



Sicilia


8532 Messaggi

Inserito il - 21/09/2016 : 16:38:18  Mostra Profilo Invia a Ibla un Messaggio Privato  Rispondi Quotando





“Bisogna essere intelligenti per venire a Ibla….ci vuole una certa qualità d’anima, il gusto per i tufi silenziosi e ardenti, i vicoli ciechi, le giravolte inutili, le persiane sigillate su uno sguardo che spia: ma anche si pretende la passione per le macchinazioni architettoniche, dove la foga delle forme in volo nasconde fino all’ultimo il colpo di scena della prospettiva bugiarda. Ibla è città che recita a due voci insomma. Talvolta da un podio eloquente, più spesso a fior di labbra, in sordina, come conviene a una terra che indossa il suo barocco col ritegno di una dama antica”. (Gesualdo Bufalino, La Luce e il Lutto)

La vita è come una bicicletta con dieci velocità. La maggior parte di noi ha marce che non userà mai.
Linus, in Charles M. Schulz, Peanuts, 1950/2000


...La tempesta
primaverile scuote d'un latrato
di fedeltà la mia arca, o perduti. (L'Arca di E.Montale).
Torna all'inizio della Pagina

washer
Utente Medio



212 Messaggi

Inserito il - 21/09/2016 : 20:37:11  Mostra Profilo  Rispondi Quotando
Già provato il cambio di cavo e PC ... nisba.
Oggi è arrivata una manciata di arduini cinesi: 4 funzionano, dopo lo sbattone per i driver.
Vado a mettere un disco da ibla, e poi connetto ...

Senti che musica! ( Tex Willer )
Torna all'inizio della Pagina

Ibla
Utente Master



Sicilia


8532 Messaggi

Inserito il - 23/09/2016 : 12:00:04  Mostra Profilo Invia a Ibla un Messaggio Privato  Rispondi Quotando

“Bisogna essere intelligenti per venire a Ibla….ci vuole una certa qualità d’anima, il gusto per i tufi silenziosi e ardenti, i vicoli ciechi, le giravolte inutili, le persiane sigillate su uno sguardo che spia: ma anche si pretende la passione per le macchinazioni architettoniche, dove la foga delle forme in volo nasconde fino all’ultimo il colpo di scena della prospettiva bugiarda. Ibla è città che recita a due voci insomma. Talvolta da un podio eloquente, più spesso a fior di labbra, in sordina, come conviene a una terra che indossa il suo barocco col ritegno di una dama antica”. (Gesualdo Bufalino, La Luce e il Lutto)

La vita è come una bicicletta con dieci velocità. La maggior parte di noi ha marce che non userà mai.
Linus, in Charles M. Schulz, Peanuts, 1950/2000


...La tempesta
primaverile scuote d'un latrato
di fedeltà la mia arca, o perduti. (L'Arca di E.Montale).
Torna all'inizio della Pagina

washer
Utente Medio



212 Messaggi

Inserito il - 23/09/2016 : 22:45:20  Mostra Profilo  Rispondi Quotando
Qua sotto!

Ho risalito la china. Anzi sono un po' più avanti: ho verificato il funzionamento con lo step-down collegato ai 36v.

EDIT: qua c'era una foto con collegamenti sbagliati.

Monterò domenica: domani mi serve ancora una bici funzionante.

Senti che musica! ( Tex Willer )

Modificato da - washer in data 23/09/2016 22:49:25
Torna all'inizio della Pagina
Pagina: di 3 Discussione Precedente Discussione Discussione Successiva  
Pagina Precedente | Pagina Successiva
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
Vai a:
Forum Indipendente Biciclette Elettriche, Pieghevoli e Utility © 2000-06 jobike Torna all'inizio della Pagina
Questa pagina è stata generata in 0,69 secondi. Versione 3.4.06 by Modifichicci - Herniasurgery.it | Distribuito Da: Massimo Farieri - www.superdeejay.net | Powered By: Platinum Full - Snitz Forums 2000 Version 3.4.06
Creative Commons License
Questo/a opera è pubblicato sotto una Licenza Creative Commons.