ADSense1

Mostrando postagens com marcador Projetos eletrônicos. Mostrar todas as postagens
Mostrando postagens com marcador Projetos eletrônicos. Mostrar todas as postagens

sábado, 29 de junho de 2013

Gerando tensão negativa a partir do MAX232

Muitas vezes necessitamos de de uma tensão negativa com pequena capacidade de corrente. A primeira coisa que nos vem a mente, é algum CI pronto que gere esta tensão, se possível sem a utilização de indutores. Ou, de implementar algum circuito do tipo "charge pump". Bem, se a corrente necessária não ultrapassar os 25mA,  podemos lançar mão do famoso MAX232. Pois este CI, possui internamente um circuito "charge pump" para gerar as tensão negativas necessárias à comunicação no padrão EIA232. Razão pela qual, são necessários capacitores externos na aplicação deste CI.


Este CI, disponibiliza um pino, designado VS-, ou simplesmente V-, onde disponibiliza uma tensão negativa por volta dos -8,5V. Valor desta tensão varia com a carga demandada. Para uma corrente por volta dos 20mA, esta tensão pode chegar aos -5V. É importante verificar o datasheet para mais detalhes.

domingo, 23 de junho de 2013

Circuito Indicador de Bateria Descarregada



O circuito de sensoriamento é composto pelo amplificador operacional 741, IC1 na configuração de comparador de tensão, usando um diodo zener, D1, para fornecer uma tensão de referência. Quando a tensão disponível no cursor do trimpot/potenciômetro R2 está abaixo da tensão de referência gerada por D1, a saída de IC1 vai ao valor baixo, que é por volta de 1,7V em relação ao terminal negativo da bateria. Assim, o led, LED1, acende, através de R3.

Este circuito pode ser adaptado para situações onde se utilizará baterias com tensões de à 18V. Para isso, escolhe-se o zener com valores adequados em conformidade com os valores de de bateria fraca para cada caso. Por ex. Nos caso de baterias chumbo-ácidas de 6V[1], o valor recomendado para se iniciar o carregamento da mesma é quando esta atinge 5,25V (1,75/célula), sem carga (ou carga muito baixa). Neste caso, faz-se necessário escolher um zener com tensão abaixo de 5,25V.

Já no caso de R3, deve ser escolhido para uma corrente mínima de acionamento do led. Subtraindo da diferença entre a tensão da bateria descarregada e o valor de 1,7V (nível baixo de IC1), a queda de tensão no led LED1. Obtendo-se R3, pela razão deste valor de tensão obtido da corrente do led.

Também é importante verificar o datasheet do diodo zener: corrente mínima e máxima de operação, variação do valor de tensão (em função da tolerância, da corrente e da temperatura de operação).

[1] - Deve-se atentar ao valor mínimo recomendado da alimentação de operação do amplificador operacional 741. Segundo o datasheet do UA741 da ST, é 5V (tensão entre os pinos de alimentação).

segunda-feira, 8 de abril de 2013

Da Pimp :Testador, Carregador e Dessulfatador de Bateria Chumbo-Ácida Selada

O Da Pimp é portátil e funciona como carregador, testador para dessulfatação de baterias chumbo-ácidas seladas.  O seu autor é Mikey Sklar. Este projeto nasceu como uma melhoria do Carregador de Bateria Capacitivo de George Wiseman.

Da Pimp usa capacitores ao invés de transformador, é extremamente leve e de baixo custo. Segundo o autor, pode ser usado para:

  • Teste rápido para verificar o nível de sulfatação em que a bateria se encontra;
  • Recuperação de baterias automotivas;
  • Recuperação de baterias de pequenos barcos;
  • Recuperação de todo o conjunto do banco de baterias de chumbo-ácido de ciclo profundo utilizado em carros elétricos de golf, empilhadeira, etc..
  • Recuperação de baterias de ferramentas elétricas (furadeira/parafusadeiras, cortadores de grama, serras elétricas);
O kit para montagem pode ser obtido no blog do autor. (sklarm@screwdecaf.cx)

terça-feira, 20 de novembro de 2012

Uma fonte de corrente simples com Amp op e transistor bipolar

Muitas vezes, nos deparamos com situações que exigem uma fonte de corrente, como o caso de controlar atuadores como válvulas que operam no padrão de 4 a 20 mA.
O circuito a seguir, de fácil implementação, utiliza componentes simples como transistor bipolar e amplificador operacional comum.

R1 e R3 formam um divisor de tensão, gerando a tensão de referência Vref. Mas esta tensão poderia ser obtida através de outras formas, como um zener, conversor D/A, etc.. Então, temos que a corrente na carga que é a corrente de coletor do transistor PNP, é igual a corrente em R2, desconsiderando a corrente de base deste transistor. Como em geral, na maioria dos transistores de uso geral e baixa potência devido a um alto hfe, esta aproximação (corrente de emissor = corrente de coletor) pode ser aplicada. Assim, tem-se que a corrente desta fonte pode ser calculada a partir da equação:

Current Out = (V+  - Vref) / R2.

Mantendo-se constantes V+ e Vref, tem-se Current Out também constante. Isto, é claro, é verdadeiro até a saturação do transistor, estado a partir do qual, o transistor deixa de compensar a tensão do coletor em função da variação da carga para manter a corrente da carga constante.

domingo, 4 de novembro de 2012

Construindo uma Pistola Laser capaz de acender fósforos e queimar papel

Veja como inserir em uma pistola de plástico um circuito eletrônico capaz de gerar uma luz de intensidade suficiente para queimar papel ou acender um palito de fósforo com alguma distancia.

A proposta do experimento é para quem deseja entender melhor o universo do laser, seu conceito e possibilidades. Fique atento em não efetuar este tipo de experimento sem seguir as normas de segurança, principalmente o uso de óculos escuro para se proteger.

Veja no vídeo abaixo como funciona o equipamento montado em casa.

segunda-feira, 3 de setembro de 2012

Carregador 6V/12@1A para Bateria Chumbo-Ácida

Este carregador nada mais é que uma fonte típica linear com um trafo de 15V de saída, um circuito retificador de ponte completa a diodo e um filtro composto por um capacitor eletrolítico de 2200uF, próximo a ponte, e por um de 47uF, próximo ao LM317. Este é um regulador linear comum de fácil aquisição, em sua configuração mais comum de regulador, onde temos a tensão de saída determinada pela fórmula: Vout=1,25*(1+R2/R1) (V). Assim, com a chave S1 fechada, temos cerca de Vout = 6V, e com a mesma aberta, Vout = 12V. A corrente máxima, é limitada pelo próprio LM317 em cerca de 2,2A. É importante observar que o LM317 deve ser montado em dissipador de calor com um coeficiente de dissipação suficiente para manter o CI regulador dentro das especificações térmicas máximas (o datasheet deverá ser consultado).
Tem-se na saída um fusível de 3,0 A e diodos para proteção contra ligação invertida da bateria e curto-circuito.

sexta-feira, 27 de abril de 2012

Carregador de Bateria 12V (chumbo-ácido,selada,NiCd...)


O carregador aqui descrito é destinado ao carregamento de baterias tipo chumbo-ácido, seladas, reguladas por válvulas..., de pequena capacidade, 2 a 10Ah.

O carregador consiste de dois estágios: O primeiro é uma dobrador de tensão, utilizando um temporizador 555 acionando um par de transistores conectados como seguidores de emissor. Este dobrador possui resistores de potência que limitam a corrente de carga.

O segundo estágio é um regulador de tensão que utiliza o CI regulador 7815, cuja saída é aplicada diretamente à bateria a ser carregada através do diodo D3 (1N4003), que previne corrente reversa e reduz a tensão a uma valor mais adequado, resultando num valor de carregamento de cerca de 14,4V. Esta tensão é adequada para a fase de carregamento profundo (cíclico), mas é muito alta para a fase de flutuação (fase em que uma pequena corrente é fornecida apenas para manutenção da carga completa).  Por exemplo, a bateria chumbo-ácido selada VRLA (regulada por válvula) Unipower UP1245, tem  em suas especificações: Para carregamento em tensão constante, tensão de flutuação na faixa de 13,50V a 13,80V, tensão para uso cíclico, de 14,10V a 14,40V. Portanto, ESTE CARREGADOR NÃO DEVE PERMANECER CONECTADO A BATERIA APÓS SE ATINGIR O FINAL DA CARGA. Para usá-lo no modo de flutuação, pode-se adicionar diodo em série com o D3 até se obter o valor da tensão de carregamento em flutuação. Para isto deve-se consultar as especificações da bateria para verificar o valor da tensão de flutuação. A corrente máxima de carga está por volta dos 400mA.

Existe uma saída auxiliar que providencia uma tensão por volta dos 20V (sem carga). Este valor depende do valor da tensão de entrada e decresce com o aumento da carga.

No caso de curto na saída do carregador, a proteção de sobre-corrente de U2 será rapidamente ativado. O valor da corrente de curto-circuito é alta o suficiente para danificar os diodos. Caso a saída auxiliar seja curto-circuitada, o fusível de proteção F1 abrirá.

É necessário instalar dissipadores nos transistores e, principalmente, em U2, pois este aquece bastante. Também é recomendado soldar os resistores R4 e R5 deixando os terminais com cerca de 15 a 20 mm em relação à placa, para facilitar a dissipação.

sábado, 21 de abril de 2012

Carregador de Bateria Chumbo-ácido Selada com LM317


A corrente de carga é limitada a 2,2A (para Pot. dissipação < Pot. máx.) internamente pelo LM317. A medida que a tensão da bateria aumenta, a corrente de carga vai decrescendo, e quando atinge 150mA, o carregador chaveia para modo de flutuação de baixa tensão, evitando assim uma sobrecarga na bateria. No modo de flutuação uma pequeníssima corrente percorre a bateria, suficiente para manter sua carga completa.

Com uma bateria descarregada, o interruptor "start" não precisa ser acionado, desde que o carregador comece a carregar. Este interruptor deve ser acionado somente no caso de baterias ligeiramente descarregadas. Quando o interruptor  "start" é acionado, a saída do carregador vai para os 14.5V, valor este definido pela malha formada por R1, R2 e R3. A corrente de saída é sensoriada por R6 e comparada a uma fração da tensão de referência, Vref, de cerca de  1.25V, em R2 por um amplificador operacional LM301A . Quando a tensão em R6 cai abaixo da tensão em R2, o que ocorre quando a corrente de carga atinge os cerca de 150mA, a saída do LM301A vai a 0V, o que coloca R1 em paralelo com R4. Isto diminui a tensão de saída de 14.5V para aproximadamente 12.5V, tensão de flutuação, terminando a carga. Transistor Q1 é saturado, acionando o led como uma indicação visual de carga completa na bateria.

Referência: http://www.ti.com/lit/an/snoa402b/snoa402b.pdf

sábado, 19 de novembro de 2011

Construindo um Letreiro de Leds

Webinar apresentada pelo garagista (colaborador do Laboratório de Garagem) Allan David, muito interessante, mostrando como construir um letreiro luminoso com leds.

sábado, 12 de novembro de 2011

Amplificador Operacional: Referência para Projetos (Op Amp for Everyone: Design reference)


Boa referência para quem trabalha com projetos de circuitos analógicos disponibilizado pela Texas Instruments. Aborda: Revisão da teoria de circuitos, desenvolvimento das equações do amplificador operacional (amp op) ideal, técnicas de projetos para fonte de alimentação simples para amp op, teorias sobre realimentação e estabilidade dos amp op's, desenvolvimento de equações do amp op não-ideal, a compensação em circuito de realimentação por tensão, análise dos amp op em realimentação de corrente, comparação entre as realimentações por tensão e corrente, teoria e aplicações dos amp op frente aos ruídos aos quais estão susceptíveis, entendendo os parâmetros dos amp op's. Também aborda a utilização dos amp op's na instrumentação, nas comunicações tipo wireless, na interface com os conversores D/A.


Amplificadores Operacionais: Aplicações Handbook (em inglês)


Op Amp Applications Handbook, editado por Walt Jung (Newnes, 2006), abrange o básico sobre amplificadores operacionais (amp ops), amplificadores especializados, uso dos amp ops com conversores de dados, condicionamento de sinal de sensores, filtros analógicos, amplificadores de sinais, técnicas de hardware, e a história dos amp ops. Como o título sugere, este livro aborda as aplicações dos amp ops, mas o faz em um amplo escopo. Também cobre atentamente um boa quantidade de tópicos relacionados a projetos, o que o torna uma excelente ferramenta para projetista de circuitos analógicos. 

Os arquivos individuais ou um arq. zip contendo todos os capítulos originais do Op Amp Applications Seminar, podem ser baixados no link abaixo.


OP AMP APPLICATIONS


H Op Amp History
1 Op Amp Basics
2 Specialty Amplifiers
3 Using Op Amps with Data Converters
4 Sensor Signal Conditioning
5 Analog Filters
6 Signal Amplifiers
7 Hardware and Housekeeping Techniques
Index

quarta-feira, 19 de outubro de 2011

Auire Prisma: Primeiro identificador de cores e dinheiro, 100% brasileiro

A empresa social Auire Tecnologias Acessíveis apresenta neste vídeo, através de seu co-fundador Fernando de Oliveira Gil, uma invenção que vai ajudar em muito pessoas com deficiência visual: Um equipamento portátil que identifica cores e dinheiro. Sempre fico bastante satisfeito ao ver coisas deste tipo. Em ver que nós, brasileiros, somos capazes, competentes. Chega desta síndrome "vira-latas" que nos leva a acreditar que somente o que vem de fora é bom, é melhor. Por isso, divulgo este vídeo e também links deste projeto, como o da benfeitoria para aqueles que de alguma forma possa contribuir.



segunda-feira, 17 de outubro de 2011

50 Circuitos com o temporizador 555


Outro excelente material (em inglês) com 50 exemplos de circuitos utilizando o famoso temporizador 555. Um ótimo material de base para quem trabalha com projetos de circuitos.


200 Circuitos a Transistor


Excelente material (em inglês) disponível tanto para download quanto para acesso on line, contendo 200 exemplos de circuitos transistorizados, fáceis de montar, com explicação do funcionamento. Um bom material que serve de base pra quem trabalha com projetos de circuitos. Está dividido em duas partes, cada qual contendo 100 circuitos. 


Parte 1
Parte 2 

quarta-feira, 21 de setembro de 2011

Apostila: Microcontroladores PIC e Periféricos



Esta apostila aborda alguns conceitos básicos sobre os microcontroladores PICMicro da Microchip, a comunicação USB e seus métodos de comunicação mais comuns. Apresenta também, uma aplicação prática com a ferramenta SanUSB, utilizando a comunicação USB, emulando uma porta serial através do protocolo CDC, fazendo uso da linha PIC18Fxx5x que já possui o hardware integrado para comunicação USB. Esta apostila foi elaborada pelo Prof. Sandro César Silveira Jucá, professor da área de telemática do IFCE.

domingo, 21 de agosto de 2011

Projeto completo de conversor TTL-USB CDC (Serial Emulada sobre USB)

Projeto incluindo esquema elétrico, arquivos das placas (para o Eagle), Gerber. Utiliza o chip FTDI. Incluindo o conversor TTL-RS232 (MAX232) se obtém um conversor RS232 para USB.






terça-feira, 26 de julho de 2011

Tocando a Marcha Imperial em um drive de disquetes antigo

Este é um projeto de dois alunos do curso de Engenharia da Computação da Universidade Federal de São Carlos. Nele, estes alunos conseguiram executar a famosa Imperial's March (Marcha Imperial) composta por John Willians para o filme Star War. Bem, eles se aproveitaram do motor de passo que faz parte deste antigo drive de disquetes de 5 1/4", fazendo-o de e passos em freqüências semelhantes às notas musicais. Para isto, fizeram uso de um microcomtrolador 8051, o AT89S52 da Atmel. A seguir, têm-se um vídeo mostrando este projeto em funcionamento e link do projeto em pdf.



Baixe o pdf do projeto:

segunda-feira, 25 de julho de 2011

Comunicação Serial PC-Plotter com Microcontrolador PIC16877 e controle PID

Esta bibliografia apresenta uma aplicação do Microcontrolador PIC16F877 da Microchip na comunicação serial entre um PC e um Plotter serial. Desta forma, apresenta o projeto de uma placa microcontrolada para a interface entre o PC e um plotter, com um circuito de medição das posições dos motores deste plotter, e o controle através de algoritmo PID do posicionamento da pena.



quinta-feira, 21 de julho de 2011

Automação de Catracas com PIC16F877 via Comunicação serial RS-485

Este trabalho apresenta uma aplicação de automação de catracas com uso do Microcontroaldor PIC16F877, utilizando um esquema de rede com um PC sendo o mestre e as catracas os escravos.

Comunicação entre LEGO Mindstorms NXT e Arduino via serial RS-485

O artigo propõe a comunicação serial pelo protocolo RS-485 entre o LEGO Mindstorms NXT e o Arduino, utilizando o CI MAX 485.



Hardware:


Ambiente de programação:


– NXT firmware 1.28
– NXC nbc-1.2.1.r1
– Arduino 0018
– Mac OS X 10.6.3


Obsevações:

  • Foi usado um Arduino Nano V3, mas outros modelos também podem usados;
  • Inspirado pelo post  Early stage RS 485 with MAX485 no fórum sobre arduino e pelo post RS485 to RS232 Adapter no fórum nxtasy.org;
  • As funções seriais foram baseadas na biblioteca antiga de software serial do Arduino;
  • Testados para velocidades entre 9600 and 57600; velocidades maiores, não trabalha
baudrate.h:
#define RS485_BAUD 57600

NCX Program: (Screenshot)
#include "baudrate.h"
#define TOWAIT 2000
#define MSG "Hello Arduino  "

// -------------------------------------------------------------
void printMsg(byte inbuffer[], int cnt) {
  TextOut(0, LCD_LINE3, "       Baud");
  NumOut(0, LCD_LINE3, RS485_BAUD);
  TextOut(0, LCD_LINE5, "l=    cnt=     ");
  NumOut(12, LCD_LINE5, ArrayLen(inbuffer));
  NumOut(60, LCD_LINE5, cnt);
  //                        "Hi NXT,got  "
  TextOut(0, LCD_LINE6, "rcv:             ");
  TextOut(24, LCD_LINE6, ByteArrayToStr(inbuffer));
}

// -------------------------------------------------------------
task main() {
  int i = 0;
  int cnt = 0;
  byte outbuffer[];
  byte inbuffer[];
  char result;

  SetSensorType(IN_4, SENSOR_TYPE_HIGHSPEED);
  Wait(100);

  // we use odd parity on the Arduino side
  // see: http://forums.nxtasy.org/index.php?showtopic=3871
  RS485Uart(HS_BAUD_##RS485_BAUD, HS_MODE_8_DATA|HS_MODE_O_PARITY|HS_MODE_10_STOP);
  Wait(100);
  StrToByteArray(MSG, outbuffer);
  TextOut(0, LCD_LINE1, "RS485 <> Arduino");

  while (true) {
    outbuffer[14] = '0' + i;
    i++; if (i==10) i = 0;

    result = RS485Write(outbuffer);
    while (!RS485DataAvailable()) {}
    result = RS485Read(inbuffer);

    printMsg(inbuffer, cnt);
    cnt++; if (cnt==1000) cnt = 0;
    Wait(TOWAIT);
  }
}                                                             

Arduino sketch: (Screenshot)
#include "baudrate.h"

// Pins and wires
//         Arduino                Wire       MAX485
const byte RS485_OUT_PIN = 10; // yellow --> DI
const byte RS485_IN_PIN  = 11; // green  --> RO
const byte RS485_CTL_PIN = 12; // grey   --> RE+DE
//         VCC                           --> VCC
//         ------------------------------------------
//         NXT Sensor Port 4      Wire       MAX485
//         DIGIAI1                blue   --> B
//         DIGIAI0                yellow --> A
//         GND                    black  --> GND

const byte RECV_RS485_BIT =  B00001000;
const byte SEND_RS485_BIT =  B00000100;
#define readRS485inPin (PINB & RECV_RS485_BIT)

const unsigned int BUFLEN = 128;
const unsigned int outnbuf = 12;
byte outBuf[BUFLEN];
byte inBuf [BUFLEN];
unsigned int innbuf;
const char msg[] = "Hi NXT,got  ";

const byte SER_TIMEOUT = 7;
unsigned int RS485_LEN;
unsigned int bitDelay;
unsigned int halfBitDelay;

const byte CYCLES = 45;
// ------------------------------------------------------------------
void serSetup(unsigned long baud) {
  pinMode(RS485_OUT_PIN, OUTPUT);
  digitalWrite(RS485_OUT_PIN, LOW);
  pinMode(RS485_IN_PIN, INPUT);
  digitalWrite(RS485_IN_PIN, LOW);
  pinMode(RS485_CTL_PIN, OUTPUT);
  digitalWrite(RS485_CTL_PIN, LOW);

  RS485_LEN = 1000000 / baud;
  bitDelay = RS485_LEN - clockCyclesToMicroseconds(CYCLES);
  halfBitDelay = RS485_LEN/2 - clockCyclesToMicroseconds(CYCLES);
  Serial.print("\nRS-485 configured, ");
  Serial.print(baud, DEC);
  Serial.print(" Baud, Bit length ");
  Serial.print(RS485_LEN, DEC);
  Serial.println(" uSec");
}

// Startbit of 1st byte of incoming message encountered
// ------------------------------------------------------------------
byte serAvail() {
  return readRS485inPin;
}

// Read a byte
// ------------------------------------------------------------------
unsigned int serRead() {
  byte i;
  int val = 0;
  byte parity = 0, stopbit = 0;

  long start = millis();
  while (true) {
    if (millis()-start>SER_TIMEOUT) return -1;
    if (readRS485inPin) break;     // startbit hit
  }

  delayMicroseconds(halfBitDelay); // jump to middle of startbit
  for (i=0; i<8; i++) {
    delayMicroseconds(bitDelay);
    val |= !readRS485inPin << i;   // data bits
  }
  delayMicroseconds(bitDelay);
  parity = !readRS485inPin;        //
  delayMicroseconds(bitDelay);
  stopbit = !readRS485inPin;       //
  return val;
}                                                             

// Write one bit
// -----------------------------------------------------------------
void serBit(byte mark) {
  if (mark) PORTB &= ~ SEND_RS485_BIT;
  else      PORTB |=   SEND_RS485_BIT;
//  delayMicroseconds(RS485_LEN);
  delayMicroseconds(bitDelay);
}

// Write a byte
// ------------------------------------------------------------------
void serWrite(byte data) {
  byte mask = 1;
  byte bitcount = 0;

  serBit(LOW);               // startbit
  for (byte i=0; i<8; i++) { // data from LSB to MSB
    if (data & mask) {
      serBit(HIGH);
      bitcount++;
    } else {
      serBit(LOW);
    }
    mask <<= 1;
  }
  serBit((bitcount%2)==0);   // odd parity bit
  serBit(HIGH);              // stop bit
}

// ------------------------------------------------------------------
void printMsg(const char *s, byte buf[], int nbuf) {
  Serial.print(s);
  Serial.print(": \"");
  for (int i=0; i<nbuf; i++)
    Serial.print(buf[i], BYTE);
  Serial.println("\"");
}

// ------------------------------------------------------------------
void serSendMsg(byte buf[], int nbuf) {
  int i;

  digitalWrite(RS485_CTL_PIN, HIGH);
  for (i=0; i<nbuf; i++)
    serWrite(buf[i]);
  digitalWrite(RS485_CTL_PIN, LOW);
}

// ------------------------------------------------------------------
int serRecvMsg(byte buf[]) {
  int c;
  int nbuf = 0;

  while ((c = serRead())!=-1)
    buf[nbuf++] = c;
  return nbuf;
}

// ------------------------------------------------------------------
void measureComms(byte stage) {
  static unsigned long old = 0;
  unsigned long now; 

  if (!stage) {
    old = millis();
  } else {
    now = millis();
    Serial.print("comms took ");
    Serial.print(now-old, DEC);
    Serial.println(" mSec");
  }
}

// ------------------------------------------------------------------
void setup() {
  Serial.begin(9600);
  for (int i=0; i<outnbuf; i++)
    outBuf[i] = msg[i];
  outBuf[12] = 0;
  serSetup(RS485_BAUD);
}

// ------------------------------------------------------------------
void loop() {
//  measureComms(0);
  if (serAvail()) {
    innbuf = serRecvMsg(inBuf);
    outBuf[11] = inBuf[innbuf-1];
    serSendMsg(outBuf, outnbuf);

//    measureComms(1);
    printMsg("Recv", inBuf, innbuf);
    printMsg("Sent", outBuf, outnbuf);
  }
}

Fontes:



LinkWithin

Related Posts Plugin for WordPress, Blogger...