Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Potenziometro digitale

Progetti, interfacciamento, discussioni varie su questa piattaforma.

Moderatori: Foto UtenteWALTERmwp, Foto Utentexyz

0
voti

[1] Potenziometro digitale

Messaggioda Foto Utenteburns » 25 gen 2016, 18:22

Ciao a tutti... dovrei pilotare con arduino un potenziometro digitale in modo da poter variare la resistenza e quindi il guadagno di uno stadio preamplificatore. Per sostituire la resistenza (fissa) in retroazione ho scelto un MAX5436 ma ho qualche problema nel collegarlo correttamente. Vorrei utilizzare i pin analogici e protocollo I2C visto che supporta la connessione seriale, per evitare di usare pin digitali visto che sono già impegnati. Ho allegato uno schema di come ho collegato i vari pin ma ho dei problemi con i Pin 1, 2 e 3 che non so bene dove collegarli ad arduino...
grazie a tutti...
Allegati
PotDigit.jpg
Avatar utente
Foto Utenteburns
0 2
 
Messaggi: 13
Iscritto il: 16 nov 2015, 16:22

0
voti

[2] Re: potenziometro digitale

Messaggioda Foto Utenteluxinterior » 25 gen 2016, 19:08

Dai un'occhiata al sito microchip
Nulla in contrario su maxim ma forse microchip è più agecvle repreire pochi pezzi (se è uso hobbistico)
Attento che Il componente maxim che hai segnalato tu non è I2C
Avatar utente
Foto Utenteluxinterior
4.311 3 4 9
Master EY
Master EY
 
Messaggi: 2690
Iscritto il: 6 gen 2016, 17:48

0
voti

[3] Re: potenziometro digitale

Messaggioda Foto Utenteburns » 25 gen 2016, 19:15

Purtroppo non ho molta scelta su i componenti possiedo già il max5436 e se possibile non comprerei un altro compone se non strettamente necessario. Sul datasheet c'è scritto "Compatible Serial Interface" visto che I2C è un sistema di comunicazione seriale pensavo fosse supportato.
Avatar utente
Foto Utenteburns
0 2
 
Messaggi: 13
Iscritto il: 16 nov 2015, 16:22

0
voti

[4] Re: potenziometro digitale

Messaggioda Foto Utenteluxinterior » 25 gen 2016, 19:19

Ah ok se hai già il componente le cose cambiano
Purtroppo no serial interface non significa neccesariamente I2C
Nel tuo caso hai tre pin
CS chip select
SCLK clock
DI data input
Dovrebbero essere compatibili con una periferica SPI.
Non conosco Arduino ma dovresti cercare SPI anche in emulazione software tanto non credo ti serva velocità spaventosa.
Per la scelta dei pin a cui collegarti aspetta qualche arduino esperto
Avatar utente
Foto Utenteluxinterior
4.311 3 4 9
Master EY
Master EY
 
Messaggi: 2690
Iscritto il: 6 gen 2016, 17:48

0
voti

[5] Re: Potenziometro digitale

Messaggioda Foto UtenteJackd » 10 feb 2016, 21:28

il max5436 è comandabile con SPI quindi devi avere 3 pin di arduino liberi per giocarci.
l'ideale sarebbe avere, nel caso di una board UNO, il pin 13, 11 e un altro a caso.
per sta volta facciamo finta di nulla... ti ricordo solo che se sei a corto di pin digitali, puoi usare i pin analogici come digitali, avendo l'accortezza di richiamarli usando il N°14 al posto di A0, 15 al posto di A1 ecc...
Il mio consiglio è di darti una mezza letta almeno un volta alla documentazione della SPI di arduino.

AL volo un po maccheronicamente, ma per farti avere un idea, tu per pilotare il device SPI, devi usare 3 pin, uno per il clock, uno per il dato seriale e uno per il ChipSelect; per la cronaca ci sono anche integrati spi a 4 pin, per restituire al micro delle informazioni, ma non è il tuo caso.

il ChipSelect serve per avvisare il tuo integrato spi che gli stai per mandare dei dati, sul max5436 è "active LOW" quindi quando lo porti a LOW l'integrato si mette a origliare.
Una volta che lo riporti ad HIGH l'integrato sa che hai finito di inviargli il dato seriale; nel max5436, ritornare ad HIGH è il "segnale" per aggiornare la posizione del wiper.

Il dato seriale, è il numero in binario che passi dal micro all'integrato, nel tuo caso tra 0000 0000(0) e 0111 1111 (127)

Il clock in estrema sintesi, serve per poter fare riconoscere al tuo integrato cosa gli stia mandando il micro come dato seriale.

Detto questo, passiamo allo sketch.


Codice: Seleziona tutto
//do un nome ai pin per fare le cose a modo
int seriale=11; //mosi - collegato al DIN del max5436
int clocks=13;   //clock - collegato al SCLK del max5436
int csPin=10; //cs - collegato al CS del max5436
//creo variabile datoDaMandare che contaerra' il numero da passare al max
int datoDaMandare=0;

void setup()
{
//avviso arduino che voglio usare i seguenti pin come Uscite
pinMode(seriale, OUTPUT); //MOSI out;
pinMode(clocks, OUTPUT); //sck clockpin
pinMode(csPin, OUTPUT); //cs
//metto alto il CS per evitare che disturbi diano falsi positivi.
digitalWrite(csPin, HIGH);
}
void loop()
{
//
tuo codice che fa le cose che deve fare
//

datoDaMandare=5; //numero compreso tra 0 e 127 per comandare il tuo cursore

//e qui la magia...
digitalWrite(csPin, LOW);
shiftOut(seriale, clocks, MSBFIRST, datoDaMandare); 
digitalWrite(csPin, HIGH);
//se hai un codice piuttosto veloce lascia questo piccolo ritardo
delay(25);
}
Codice: Seleziona tutto
[code=php]per il codice a colori[/code]
Avatar utente
Foto UtenteJackd
794 4 7
Expert
Expert
 
Messaggi: 282
Iscritto il: 15 set 2014, 19:10
Località: Padova


Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti