Go Down

Topic: 4 uscite digitali usando un pin pwm (Read 2153 times) previous topic - next topic

Faccina

Funziona se faccio così ?
http://www.japantrip.tk/TEMP/Schema%203.png

Code: [Select]

Dovrebbe venire:
uscita da filtro 1 (r1-c1-r2-c2)     1.25 v
uscita da filtro 2 (r6-c3-r7-c4)     2.5 v
uscita da filtro 3 (r11-c5-r12-c6)   3.75 v
uscita da filtro 4 (r16-c7-r17-c8)   5 v

l'opamp aumenta a 5v le uscite e pilota il transistor

pwm 25%   ->  L1 on, altri off
pwm 50%   ->  L2 on, altri off
pwm 75%   ->  L3 on, altri off
pwm 100%  ->  L4 on, altri off


Testato

idea interessante, le tolleranze de filtri
potrebbero però non far attivare le uscite alla percentuale voluta.
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Faccina

http://www.muzique.com/schem/filter.htm
Ho messo 2 r in serie cosi ho:
12.68 Kohm (misurato con multimetro)
c1 100 nF a lenticchia
Dovrebbe passare solo < 125.6 Hz però passa tutto  :~ sbaglio io o hanno troppa % le resistenze/il condensatore ?

Code: [Select]
void setup()
{
  pinMode(11, OUTPUT);
  digitalWrite(11, LOW);
  Serial.begin(9600);
  Serial.println("Hello Moto TUNZ TUNZ TUNZ");


void loop()
{
  if (Serial.available())
  {
    byte sr = Serial.read();
    switch (sr)
    {
      case 49:
              Serial.println("25%");
              analogWrite(11, 63);
              break;
      case 50:
              Serial.println("50%");
              analogWrite(11, 127);
              break;
              break;
      case 51:
              Serial.println("75%");
              analogWrite(11, 190);
              break;
      case 52:
              Serial.println("100%");
              analogWrite(11, 255);
              break;
      default:
              Serial.println("0%");
              digitalWrite(11, LOW);
    }
  }
}

Testato

#3
Jun 22, 2012, 11:46 pm Last Edit: Jun 22, 2012, 11:49 pm by Testato Reason: 1
che intendi per passa tutto ? hai un oscilloscopio per controllare visivamente ?

perche' dici di aspettarti che passino frequenze inferiori (hai scritto <) a 126Hz, questo e' un filtro passa banda, quindi tuto cio' che e' pre o post 126 viene attenuato, ma non bloccato del tutto.
attenua 6 dB per ottava
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Faccina

Ho fatto solo la parte passa basso per provare quindi dovrebbero passare solo < 125.6 Hz
Non ho un oscilloscopio ma se taglia > 126 Hz con un multimetro messo dopo non dovrei vedere max 1.25v al 25% di pwm e 0 o poco più con pwm >30% ?

Testato

il pwm e' a frequenza fissa, i tuoi filtri passa banda come vorresti usarli ? dovresti ragionare sulla tensione prodotta su una resistenza, non sulla frequenza di taglio di un passa banda
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Faccina

Pensavo cambiasse la frequenza  :smiley-sweat:
Un 555 si può controllare con un pin di arduino in modo da variare la frequenza che genera ?

Testato

ma non fai prima a prendere 4 uscite di arduino ed usarle direttamente ? non hai piu' pun disponibili ? che altro fanno tutti i pin del tuo rpogetto ?
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Faccina

Devo mettere:
Un lcd su uno shift register
un sensore per il telecomando
un buzzer
2 optoisolatori per comandare una cam
un sensore di temperatura
3 motori, 2 sono dc controllati da un l298, i 2 enable li collego assieme ma servono cmq 4 pin pwm
uno stepper
6 fine corsa

Brunello

MCP23017.. chip I2C con 16 porte I/O
in 8 porte ci colleghi l'LCD direttamente ( si trovano anche le librerie )
nelle restanti 8 porte ci metti i fine corsa e il buzzer.
Quindi tutta questa roba la gestisci in I2C con solo due pin (SDA e SCL )
"C' è chi legge Guerra & Pace e non ci capisce un tubo vuoto; c'è chi legge l'etichetta delle patatine fritte e ci trova la spiegazione del mondo" (J.S. S. architetto napoletano)

Faccina

Ho anche un'altro shift register potrei quindi usarne 2 in cascata per gli out, i finecorsa posso metterli sull'analogico con un partitore e leggere V diversi per ogniuno.
Vorrei però capire se è possibile fare:
controllo frequenza 555 con arduino e non con un pot -> filtri -> amp -> out

Brunello

un 555 ( in configurazione astabile ) lo puoi controllare da arduino entrando sul pin 5 ( control voltage ) quello che normalmente si collega a massa con un condensatore.
Usi un pin PWM di arduino, seguito da un filtro passabasso , per generare una tensione.
Ma che frequenze volevi generare ?
"C' è chi legge Guerra & Pace e non ci capisce un tubo vuoto; c'è chi legge l'etichetta delle patatine fritte e ci trova la spiegazione del mondo" (J.S. S. architetto napoletano)

Faccina

Vanno bene 4 frequenze "a caso" tipo 200-400-600-800 Hz servono solo per generare 4 uscite on/off diverse

Brunello

#13
Jun 23, 2012, 04:49 pm Last Edit: Jun 23, 2012, 04:53 pm by brunello Reason: 1
mica ho capito cosa vuoi combinare..
parrebbe:
Che tu voglia con un pin di arduino generare 4 frequenze. Che poi con il circuito postato all'inizio le riconosca e possa ricavarne 4 uscite digitali.


Edit: Cavolo, solo ora faccio caso al titolo del post...
E comunque non e' che generare quatto frequenze sul pin PWM hai bisogno di fare chissa' cosa. Usi la libreria  tone(pin, frequency) e le generi
"C' è chi legge Guerra & Pace e non ci capisce un tubo vuoto; c'è chi legge l'etichetta delle patatine fritte e ci trova la spiegazione del mondo" (J.S. S. architetto napoletano)

Faccina


Lo stavo anche usando con il buzzer...

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy