Go Down

Topic: 4 uscite digitali usando un pin pwm (Read 2040 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 )

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 ?

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

Faccina


Lo stavo anche usando con il buzzer...

Go Up