Domanda Potenziometro 10k

Perdonate la mia inesperienza che è quasi totale.
Sto usando Tinkercad che mi simula un "Arduino uno".
Quello che vorrei fare è questo:

  • utilizzando 4 pulsanti e relativi ingressi digitali, vorrei che ognuno mi facesse uscire un valore preimpostato su un uscita PWM (che poi dovrebbe diventare un 4-20mA tramite se necessario un convertitore mV- mA).
    Detto questo, ho fatto qualche prova, ma il valore non è stabile, è molto "ballerino" controllato con un multimetro digitale (sempre su tinkercad).
    Ho visto che se simulo un potenziometro (sempre con tinkercad) invece, questo da un valore fisso.
    Sto sbagliando qualcosa a livello di programmazione o dovrei aggiungere qualche componente elettronico per far si che il valore sia fisso?
    Vi allego la parte di programma che sto utilizzando per un pulsante ( fatto giusto per capire se poteva funzionare, darmi valori stabili, quindi molto scarno e scritto male ).
float pinPWM = 3;
int pulsante = 2;

void setup()
{
  pinMode(pulsante, INPUT);
  pinMode(pinPWM, OUTPUT);
}

void loop()
{
  if(digitalRead(pulsante) == HIGH)
  {
    analogWrite(pinPWM, 10);
  }
else
   {
    analogWrite(pinPWM, 100 );
  }
 }

Grazie a chi mi saprà aiutare...sono molto inesperto.

Perdonami ma non ho capito. Se su tinkercad usi come input un pulsante il valore di cosa è "ballerino", ed in che senso? Se invece usi un potenziometro è invece fisso (sempre la domanda: "cosa esattamente?", unita anche al codice)?

Oltre quindi a spegarti meglio, se hai fatto il circuito su Tinkercad o posti anche lo schema oltre al codice, oppure, meglio ancora, metti il link condiviso allo schema (fai "Modifica visibilità per la condivisione", lo imposti come "condividi collegamento" e clicchi su "Copia collegamento") così possiamo vedere anche noi e copiarlo se necessario.

Ciao, benvenuto! :slight_smile:

Prima di tutto, devi mettere una resistenza di pull down sul pulsante, per fissare lo stato logico a pulsante aperto:

Poi devi considerare che analogWrite agisce su uscite in PWM (Pulse Width Modulation: modulazione della durata dell'impulso), quindi non esce una tensione continua ma un'onda quadra, che può essere misurata erroneamente dallo strumento virtuale. Per avere misure più affidabili, metti per esempio 1kohm in serie al segnale e 47uF (valore standard commerciale) verso massa.

Ecco il link allo schema.

Il valore ballerino è quello che leggo dall'uscita PWM (pin3), lo vedo instabile (ad esempio scrivo due valori sul pin del PWM a seconda se il pulsante è premuto o meno; e leggo sul multimetro valori da 3,8 mA a 4,01 mA ), se invece alimento un potenziometro con Arduino e lo leggo sempre con il multimetro digitale (senza passare da nessun software) vedo il valore stabile.

Il mio fine sarebbe arrivare ad avere un valore stabile come con il potenziometro simulando un valore su un uscita PWM (però al mia ignoranza in materia non mi permette di capire se è possibile ottenerlo o meno). Ho provato a guardare qualche tutorial su youtube ma non c'è niente che sia simile a quello che cercavo di fare.
Spero di essere stato un po più chiaro, grazie per la risposta datami.

Ma tu hai capito cosa è un segnale PWM ?

... magari prova a studiare QUI :roll_eyes:

Capirai che NON si tratta di una vera uscita analogica, ma di un'onda quadra con duty cycle variabile ... come ti è stato detto, se vuoi trasformarla in una "specie" di segnale analogico (molto approssimativo) DEVI far seguire l'uscita da un circuito integratore R/C e, comunque, NON avrai mai un segnale analogico come quello che ti può dare un potenziometro (salvo che ... per i valori estremi 0 e 255 :slight_smile:).

Guglielmo

Si ho letto tutto del PWM, ma mi era parso di capire che l'onda quadra variando il duty cycle potesse generare un segnale di uscita che può variare (ci sono molti tutorial per la regolazione della velocità di un motore) poi da convertire...
Comunque perfetto, da quello che mi dice allora non si può fare, devo cercare altre strade.
Grazie per la risposta.

Guarda che si può fare benissimo

Tutto sta nel filtro tra pwm ed ingresso del convertitore 4-20mA

Ci sono comunque convertitori adatti

Medi fa se ne parlò, cerca con pazienza che troverai

Hai letto il messaggio #3?

Il segnale varia nel senso che l'onda quadra che esce dal pin ha, appunto, solo un duty cycle diverso. Per spiegare in modo "divulgativo", se ci colleghi un LED puoi vedere la luminosità che è proporzionale alla percentuale di duty cycle in quanto ciò che vedi è la somma (diciamo, per semplificare...) della potenza luminosa per cui con un duty cycle del 10% vedrai un decimo della luminosità con il 100% (sempre una approssimazione, ma il concetto è questo).
Se colleghi un multimetro "simulato" che misura una tensione questo mostrerà un valore che è calcolato in modo discreto ossia dipende dal momento in cui fa la "misurazione" rispetto all'onda quadra (tra l'altro con due frequenze differenti). Ma anche se usi un multimetro "reale" per misurare la tensione DC in un circuito "reale" potresti vedere oscillazioni, e la controprova l'avresti usando un oscilloscopio.

Quindi lascia perdere questa cosa dell'emulatore, se da una uscita PWM vuoi ottenere una tensione continua ma proporzionale al duty cycle devi per forza usare un convertitore da PWM a tensione. E per farlo puoi usarne uno apposito come questo (basta cercare "PWM to Voltage Converter Module"):
image
Oppure, meglio, implementare un convertitore digitale-analogico, usando anche qui qualcosa che fa appositamente questa cosa ossia una qualsiasi schedina basata ad esempio su MCP4725 (che è anche I2C tra l'altro).
image

https://www.realdigital.org/doc/333049590c67cb553fc7f9880b2f79c3

Tradotto automaticamente in Italiano (clicca sull'immagine):

1e9d6e5976ad427a103ffe015511d962

Dove hai letto che ti ho detto che non si può fare? :open_mouth:

T'ho detto che va fatta l'integrazione del segnale con una rete R/C come ti era già stato spiegato o, sicuramente molto meglio, come dice "docdoc" si può usare un convertitore che trovi già bello che pronto ... vedi un po' tu ...

Guglielmo

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.