Ciao,
Mi è venuto in mente di studiare una rete con arduino!
A scuola l'altro giorno abbiamo fatto una verifica e volevo appunto verificare anche praticamente l'esercizio.
Si tratta di una rete con un R parallela a C con una R in serie e un'altra R sul ramo della GND.
Ho fatto il circuito su una breadboard e ho mandato l'ingresso al pin digitale 7 GND a GND e l'uscita al pin analogico 0.
Poi ho scritto questo programmino:
//Prova di un programma per misurare l'uscita di una rete.
#define U 7 // U è il pin in ingresso
void setup()
{
Serial.begin(9600); // apre la porta seriale
pinMode(U, INPUT); // imposta U come input
}
void loop()
{
digitalWrite(U, HIGH); // applica l'ingresso a gradino
Serial.println(analogRead(0)); // invia al PC il dato che legge dal pin analogico
delay(100); // aspetta
digitalWrite(U, LOW); // porta a 0 il gradino
Serial.println(analogRead(0)); // invia al PC il dato che legge dal pin analogico
delay(100); // aspetta
}
Il problema è che quando provo a mandare lo sketch ad Arduino Uno il programma mi dice che la porta "/dev/ttyACM0" non è stata trovata!
Scrivi in modo complicato;
Scrivi un sacco di cose inutili allo scopo di poterti aiutare.
Se ho capito bene é il tuo problema é che non riesci a caricare un programma su Arduino.
Domande: quale arduino, che sistema operativo, quale versione di IDE usi
Cosa hai fatto dopo l'ultima volta che funzionava?
Ritornando sul codice che hai mandato.
Non puoi definire un pin come entrata e volerlo usare come uscita.
Leggi un valore analogico dopo un tempo indefinito visto che no sai la durata del esecuzione del codice.
Cosa Ti aspetti di leggere? Che valori usi per R1, R2 e R3 e C?
Scusarti di cosa mi stai dando una mano!
Comunque prima avevo due problemi quello dell'upload e quello dello sketch che non funzionava.
Ora riesco a caricare gli sketch.
Resta il fatto che lo sketch che ho fatto non mi funziona!
Se riesci a darmi una mano a corregerlo ne sarei felice.
In pratica quello che lo sketch deve fare è restituirmi il valore della tensione all'uscita ogni n-millisecondi data una tensione a gradino all'ingresso (5V).
Questi dati che ottengo li metto poi su carta millimetrata in modo da ottenere un grafico.
Ciao icp
//Prova di un programma per misurare l'uscita di una rete.
#define U 7 // U è il pin in ingresso //Uwe: deve essere un Uscita non un entrata
void setup()
{
Serial.begin(9600); // apre la porta seriale
pinMode(U, INPUT); // imposta U come input //Uwe: deve essere un Uscita non un entrata
}
void loop()
{
digitalWrite(U, HIGH); // applica l'ingresso a gradino
Serial.println(analogRead(0)); // invia al PC il dato che legge dal pin analogico
delay(100); // aspetta
digitalWrite(U, LOW); // porta a 0 il gradino
Serial.println(analogRead(0)); // invia al PC il dato che legge dal pin analogico
delay(100); // aspetta
}
Il codice cosí scritto Ti fa 2 letture dopo x microsecondi e poi riparte dall inizio. (dove x é un icognita).
La spedizione del valore seriale é un altro freno del programma. se calcoli che con un Baudrate di 9600 puoi spedire ca 960 Byte al secondo vuol dire ceh ci mette ca 1 msecondo per byte.
Tu leggi un valore 10 Bit e trasmetti 8 Bit. Non so dirti cosa succede con i restanti 2 bit e quali sono questi 2 bit.
Non Ti fa una lettura del andamento della curva, ma solo2 punti, uno all'accensione e uno allo spegnimento.
Inoltre con i dati del condensatore e delle resistenze la curva é troppo veloce per misurare qualcosa. Se fai R*C trovi il tempo nel quale la tensione va al 63% del valore finale.
Non ho capito bene il circuito RC che usi.