LusoRobótica - Robótica em Português

Robótica => Iniciantes => Tópico iniciado por: m2snd em 15 de Setembro de 2014, 13:47

Título: Ajuda identificador condensador
Enviado por: m2snd em 15 de Setembro de 2014, 13:47
Olá,

Isto pode ser muito básico, mas a verdade é que tenho dúvidas em perceber  :P
, se me puderem ajudar, agradeço. Já andei a googlar mas não cheguei a qualquer conclusão.

No seguinte esquema, aparece este condensador  o qual está identificado com um M.

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimageshack.com%2Fa%2Fimg540%2F8549%2FIdsxVz.gif&hash=7b3f5355e010d28b3ab68afbba1a9b7dee20c4a3) (http://imageshack.com/f/f0IdsxVzg)

Este M quer dizer microfarads (1uf) ou é M de mega qualquer coisa, ou seja 1000uf?

Este está correcto para o projecto?
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimagizer.imageshack.us%2Fv2%2F640x480q90%2F673%2Fs8twiB.jpg&hash=093328ea37b74d2ae39a5387ea7cfd89b8433eeb) (http://imageshack.com/f/ips8twiBj)


Obrigado!
Título: Re: Ajuda identificador condensador
Enviado por: jm_araujo em 15 de Setembro de 2014, 14:08
Com uma fonte meio estranha, mas continua a parecer um miu, letra grega usada para o multiplicador  micro (10^-6).

Esse que mostras na foto deve dar para o gasto, apesar que usar um eletrolítico para fazer debounce de um botão (aplicação que o esquema sugere) parece-me despesista.

Título: Re: Ajuda identificador condensador
Enviado por: m2snd em 15 de Setembro de 2014, 14:21
O condensador, seria para evitar possíveis ruídos no sinal...mas achas que seja supérfluo?

Obrigado pelo ajuda !
Título: Re: Ajuda identificador condensador
Enviado por: jm_araujo em 15 de Setembro de 2014, 15:43
Não é superfluo. Mas um cerâmico chega e sobra, é mais barato, ocupa menos espaço e qualquer valor comum (1u, 100n) serve. E se liga a um microcontrolador, pode ser suprimido se fizeres debouncing no software.
E a resistência R2 também podia ir à vida.
Título: Re: Ajuda identificador condensador
Enviado por: senso em 15 de Setembro de 2014, 15:57
Se realmente for para usar com um micro nem sequer precisa de resistência nenhuma, é raro o micro que não tem pelo menos pull-ups internos.
Título: Re: Ajuda identificador condensador
Enviado por: Hugu em 15 de Setembro de 2014, 17:47
é 1uF :P o "M" tem uma perninha e mega n existe em condensadores, pelo menos que conheça ou apenas nesse tamanho! LOL
Título: Re: Ajuda identificador condensador
Enviado por: m2snd em 15 de Setembro de 2014, 18:41
Obrigado a todos pelas respostas!!!
Título: Re: Ajuda identificador condensador
Enviado por: senso em 15 de Setembro de 2014, 18:51
Por acaso até já se usou o M nos condensadores, ai nos anos 50-70 usava-se m(por vezes M na impressão) para designar micro-farad.
Assim como a voltagem muito tipicamente era escrita como wv/WV, querendo designar working voltage.

Tambem não se usava nano nos estados unidos, e até certo ponto, continuam a não usar, passam de micro(u) para pico, saltando o nano, dai na Mouser por exemplo não ter 100nF, mas sim 0.1uF por exemplo.
Título: Re: Ajuda identificador condensador
Enviado por: dropes em 16 de Setembro de 2014, 00:16
Se é para debounce, basta ter um condensador de 100nF em paralelo com o switch ou introduzir em software,
o debounce em software costuma ser um delay de 25ms, nem sempre prático em algumas rotinas.
Título: Re: Ajuda identificador condensador
Enviado por: senso em 16 de Setembro de 2014, 00:54
Não precisas de delay, usas um timer a gerar um tick, por exemplo de 1ms, e depois de 10 em 10ms, que é como faço, lês as entradas, AND do valor anterior com o actual, se estiver a zero(pull-up a 5/3.3v) durante dois ticks é considerado como botão premido, nada de delays.

Com uma estrutura de dados fica algo assim:
Código: [Seleccione]
void getBtnStatus(void){

static uint8_t btnNewState = 0; //actual button state as read
static uint8_t btnLastState = 0; //previous button state read
static uint8_t encNewState = 0; //actual encoder button state as read
static uint8_t encLastState = 0; //previous encoder button state read
static uint8_t pressedState = 0; //Shows what are the pressed buttons after the debouncing

//read the 6 user interface buttons and debounce them (4 buttons + 2 buttons from the encoders)
btnNewState = BTNPIN & ((1<<BTN1)|(1<<BTN2)|(1<<BTN3)|(1<<BTN4));
pressedState = btnNewState & btnLastState;
btnLastState = btnNewState;
buttonState.btn1 = ((pressedState & (1<<BTN1))>>3);
buttonState.btn2 = ((pressedState & (1<<BTN2))>>2);
buttonState.btn3 = ((pressedState & (1<<BTN3))>>1);
buttonState.btn4 = (pressedState & (1<<BTN4));

//read the 4 pins that are used by the 2 rotary encoders
encNewState = ENCBTNPIN & ((1<<ENC1BTN)|(1<<ENC2BTN));
pressedState = encNewState & encLastState;
encLastState = encNewState;
buttonState.encV = ((pressedState & (1<<ENC1BTN))>>3);
buttonState.encI = (pressedState & (1<<ENC2BTN));
}

Como é feita a chamada:
Código: [Seleccione]
if(milis() - buttonsMilis > 10){ //debounce buttons, it works!
    buttonsMilis = milis();
    getBtnStatus();
}
Título: Re: Ajuda identificador condensador
Enviado por: m2snd em 16 de Setembro de 2014, 10:55
Obrigado pelo código senso! Na realidade, tenho uma placa em que como se disse atrás, usei apenas uma resistência de 10k e nunca tive qualquer problema. Ligada ao arduino tem a função de 'informar' o micro se foi ou não premido comutador de acender/apagar a luz. Li algures em que tal como eu, uso as mesmas tubagens para passar os cabos de 230v/5v e que nestes casos poderia gerar eventuais ruidos. É só por uma questão de precaução.
Título: Re: Ajuda identificador condensador
Enviado por: m2snd em 16 de Setembro de 2014, 10:58
Hoje vou meter mãos à obra para ver o que sai daqui. Já dei conta que deveria ter comprado condensadores cerâmicos, mas agora já está...
Título: Re: Ajuda identificador condensador
Enviado por: dropes em 17 de Setembro de 2014, 00:11
Não me estava a referir a um delay real de 25ms, o código ao colocar a função debounce é que demora esse tempo até sair, também depende da linguagem que for escrita.
Afinal o objectivo é eliminar o duplo click que pode ocorrer ao pressionar um switch, eliminando as leituras subsequentes num determinado período de tempo.

Gostei da tua solução   ;)