Este rádio receptor de MW, com 6 transístores vai ser um dos meus entretens ao longo dos próximos tempos.

Tem uma data de fabrico de 1960 a 1963 (segundo dados da web) e por isso tem cerca de 50 anos.
Já há algum tempo que queria encontrar um rádio antigo, dos primeiros transistorizados, para restaurar. Este será o primeiro.
Marca: OMGS
Modelo: 6-Transistor TRN-6040
Bandas de recepção: Broadcast only (MW)
Funcionamento: Super-Heterodyne
Alimentação: Dry Batteries / 1 x 9 Volt
Este sendo de MW não pretendo "usar" muito, mas estou a tentar negociar um de FM/LW/MW, o mais barato possivel, para aí sim dar um restauro mais fundo, trocar algumas peças e ter o prazer de ouvir a sua sintonia.

PS: Acerca deste, de frisar o pormenor de todas as pernas das resistências, estarem isoladas. "Antigamente....".


Estes hack já o dei como perdido e como reactivado novamente.
Quando vi no titulo do datasheet:

Pensei então (não de forma errada, pois ele também funciona assim), que o CI gerasse uma frequência fixa e de acordo com o transformador usado, assim variava a tensão de saída Vo.
Não liguei mais para o datasheet, mas ficou-me o bichinho a roer... Porquê? Eu vi quando desmontei o transformador , além do SG6849, havia também um opto-acoplador. Mas porquê ter um opto-acoplador se não para fazer o feedback?
Hoje tive um pouquinho de tempo para voltar a ver com calma o datasheet e ainda há esperança para o que eu queria fazer (subir a tensão para 5V).
Na página 13 do datasheet surge um esquema que tem feedback do secundário do transformador.
Não me devo enganar muito quando penso que o circuito presente no transformador será muito semelhante a esse.
Quando voltar a casa tenho de verificar melhor o circuito do e tentar encontrar as resistências dentro do rectângulo a vermelho. Ao manipular uma delas, devo conseguir variar Vo, só preciso entender melhor de que forma o poderei fazer.
U3 é um TL431 (ver AQUI datasheet), uma referencia de tensão ajustável, cujo ajuste se faz por aquelas 2 resistências...
Vamos aguardar por novos desenvolvimentos, mas agora já estou a ver a minha ideia de subir a tensão daqueles transformadores, mais próxima de se realizar :).

Este circuito saiu do baú de recordações.
Foi o meu primeiro circuito com placa de circuito impresso e com um MCU.
É um termómetro que mostra um digito de cada vez e liga o LED correspondente à sua posição. A cada 2min faz piscar todos os LED's e mostra a temperatura máxima e a mínima desde que se ligou.
Já nem me lembrava disto...
Usa um LM35 e mede de 0 a 55ºC, com uma referência máxima na ADC, o que lhe confere até bastante precisão... precisão que depois não é dada pelo display :D.

Tenho aqui 4 transformadores destes, 3V, 2,8A.
É uma tensão que não tem grandes aplicações. Os transformadores eram usados em carregadores de pilhas 1,5V.
O objectivo será tentar hackear isto e colocar na saída 5V. No fundo, fazer um pouco à semelhança do que fiz com a fonte de computador.
Este deve ser o artigo escrito em menos tempo. Bati o record do 5min...
PS: O CI controlador tem a referência "SG6849-65DZ   /   BAOT5650004Y".

Dado a boa adesão que tive para levar esta experiência em frente, vamos fazer o primeiro teste, sexta das 22h ás 24h. Infelizmente este Sábado será impossível para mim.
Adicionem "o.engenhocas" no skype e vamos tentar reunir o máximo de engenhocas no skype.

Qualquer questão, basta escrever em comentário ou contar-me por e-mail.

Reservem Sexta das 22h ás 24h para as primeiras 2 Horas das engenhocas.

Mais um video brilhante do Dave Jones, do EEVBLOG.
Fantástico, como ele torna tudo tão simples!
Quem sabe, uma engenhoca a fazer no futuro...

Hoje vi algo interessante e gostaria de partilhar aqui e deixar à consideração dos visitantes deste blogue.
Como o que importa é a fomentação pelo gosto das engenhocas, estava a considerar marcar 2 "Horas das engenhocas".
Isto seria um horário de por exemplo, Sábados das 22h ás 00h (sempre com marcação prévia aqui no blogue), onde se poderia abrir uma sala de chat, por exemplo no skype, e utilizar esse tempo para discussão de engenhocas, ideias, etc...
Achei a ideia muito interessante e conseguindo reunir um bom grupinho de "inventores" poderia-se tornar em algo bastante interessante...
A usar o skype, a ideia seria também eu receber os diversos convites e juntar toda a gente numa conversa. Durante aquele período todos podem conversar, mesmo não sendo "conhecidos" via skype.
Eu já registei no skype "0.engenhocas" e só iniciaria sessão com ele, nessa mesma altura.

O que acham desta ideia?
Poderia resultar, mas não participava.
Poderia resultar e eu participaria.
Não vai resultar.



PS: Obviamente, são aceites todas as sugestões, basta fazer um comentário e eu responderei :D.

Esta foi uma óptima oportunidade de juntar duas engenhocas em prol de um pequeno agapornis, um recente inquilino.
Liguei o datalogger e coloquei-o dentro da criadeira para monitorizar a temperatura ao longo das horas.
A temperatura variável pode ser "programada" através do potenciómetro tal como mostrado nos circuitos anteriores (ver categoria Proj. Criadeira).
O registo foi iniciado ás 00:00, tendo sido ligada a criadeira ás 00:25 e tudo foi desligado ás 19:30.
A temperatura manteve-se muito constante pelos 28.5ºC, tendo o máximo atingido os 29ºC.
Em suma, um resultado muito positivo, pois ainda não tinha comprovado metricamente o seu funcionamento.

A fonte já tinha ficado a funcionar da forma desejada, então a 2ª parte é ajeitar tudo, reforçar ligações e montar de forma a que fique tudo o mais sólido e resistente possível.
Antes de montar, estive a "aquecer" algumas resistências de potência... e enfim é vê-las ficar "quentinhas" eheh.
 A partir daqui começa o cortes de todos os fios dos rails não utilizados (-12V, -5V, 3.3V, 5V, etc).
Aqui foram feitas as ligações do "PWR_OK", do "PS_ON", e obviamente para a ventoinha.
Aproveitei para ligar um LED no "PWR_OK" para sinalizar o bom funcionamento da fonte.
Antes de fechar a caixa e bloquear o potenciómetro, dei um ajuste final para ficar o mais próximo possível do valor de tensão desejado, 13.8V.
Depois foi só certificar-me de que todos os fios estavam bem presos (led, ventoinha, interruptor, ...) e fechar o melhor possível a caixa.
Por enquanto não tenho um dummy load para corrente constante e testar a potência máxima da fonte.
Teoricamente será uma fonte com uma potência de 138W.

Mais um hack completo :).

"A necessidade aguça o engenho", esta é uma grande verdade e este é mais um artigo que prova isso.
Este fim de semana consegui arranjar algum tempo livre para levar a cabo uma ideia que queria ter posto em prática há mais tempo: transformar uma fonte de alimentação de computador para uma fonte de alimentação a usar como recurso no radio amadorismo.
Devido à sua construção e para o fim das mesmas, esta fontes têm um bom nível de filtragem, potência e portabilidade.
A ideia é conseguir alterar o rail superior, de +12V, para atingir a tensão de 13,8V comummente usada em rádios de amadores.
A fonte que usei já era bastante antiga (datada de 2002) e no rail de +12V, garante uma corrente de 10A.
Quando abri a fonte, tentei identificar qual o CI controlador do circuito e sendo ele o CI controlador é junto dele que terei de actuar para conseguir uma variação de tensão no "exterior"...
Neste caso o CI era um TL494 (ver AQUI o datasheet).
Enquanto de googla para encontrar o datasheet, uma passagem pelo separador de imagens, traz sempre alguns circuitos exemplo que dão importantes ajudas sobre a implementação e, neste caso, o hack do mesmo.
Em baixo está um desses esquemas e a vermelho está o que realmente importa.
O TL494 possui um pino de referencia interna de 5V (13), que passa por um divisor de tensão, ao qual liga o pino 2, que olhando o datasheet trata-se de uma entrada do amplificador de erro.
O pino 1 é a outra entrada, mas que faz também um divisor de tensão mas usando uma tensão de 5V na saída. Conclusão, o TL494, entre outras coisas, vai fazer oscilar o transformador de forma igualar as tensões no pino 1 e no pino 2.
Parecia fácil de mais para resultar. A primeira ideia foi cortar a trilha do pino 1, pegar num potenciómetro e usa-lo como divisor de tensão entre um dos rails (no meu caso o rail de +5V) e GND.
Independentemente do circuito que a minha fonte tivesse, estas alterações teriam de ser o suficiente para conseguir variar as tensões na saída da fonte. Simplesmente estava a "enganar" o amplificador de erro e fazer o circuito actuar como se os novos 13,8V correspondessem aos 12V...
A imagem em cima mostra o primeiro teste. Soldei 3 fios a um potenciómetro e soldei os mesmos na PCB.
Ao ligar a fonte, a ventoinha disparava por momentos, mas desligava de imediato.
Então rodei o potenciómetro todo para o mesmo lado e fui variando aos pontos enquanto ligava e desligava a fonte.
A certa altura, a ventoinha começou a rodar e o multímetro  que tinha a medir a tensão na saída de 12V, mostrou-me cerca de 9V. Sem desligar a fonte continuei a rodar e verifiquei que a tensão estava a variar também.
Tinha encontrado o "divisor de tensão" que me colocava no pino 1 uma tensão que já permitia a regulação e a medição de erro por parte do TL494.
Daí até ter 13,8V (aprox) foi um saltinho.
Estava encontrada a solução...
O resto foi testar a sua estabilidade ao funcionar desta forma e tratar de aperfeiçoar o resultado final, mas isso vou deixar para um outro artigo, a 2ª parte.

Em baixo deixo o código já organizado para fazer e chamar um caractere especial (como um smile).
Estes displays dispõem de uns endereços na sua memória para alojar caracteres especiais. O problema aqui é que esses endereços estão numa memória RAM e quando há uma falha de energia, têm de ser "feitos" novamente.
Os caracteres podem ser feitos com base numa matriz de 5x8 pontos (sendo que a ultima linha deve ser deixada em branco). No caso do código que aqui apresento essa matriz é definida como elementos do vector "caracter[]". A função "chamar_especial()" apenas acessa o endereço onde foi previamente escrito o caracter. Aqui de futuro, não agora, ainda devo fazer alterações de modo a que consiga mudar facilmente o endereço do novo caracter especial.

Rotina para fazer e chamar ao display o caracter especial:
void especial()
{
    char endereco;
    char caracter[8]={0b00000,      //Matriz 5x8
                                     0b01010,
                                     0b01010,
                                     0b00000,
                                     0b10001,
                                     0b01110,
                                     0b00000,
                                     0b00000};


    PORTB = 0b11000000;         //DDRAM
    __delay_us(50);
    PORTBbits.RB7=0;
    __delay_us(50);
    PORTB = 0b11000000;
    __delay_us(50);
    PORTBbits.RB7=0;
    __delay_us(50);

    for(endereco=0;endereco<8;endereco++)
    {
        PORTB = 0b10001000;
        __delay_us(50);
        PORTBbits.RB7=0;
        __delay_us(50);
        PORTB = ((endereco<<1) & 0b1110) + 0b10000000;
        __delay_us(50);
        PORTBbits.RB7=0;
        __delay_us(50);

        PORTB = ((caracter[endereco]>>3) & 0b10) + 0b11000000;
        __delay_us(50);
        PORTBbits.RB7=0;
        __delay_us(50);
        PORTB = ((caracter[endereco]<<1) & 0b11110) + 0b11000000;
        __delay_us(50);
        PORTBbits.RB7=0;
        __delay_us(50);
    }

    chamar_especial();
}

Rotina para chamar ao display o caracter especial do endereço em que foi gravado:
void chamar_especial()
{
    PORTB = 0b11000000;     //DDRAM do crac especial
    __delay_us(50);
    PORTBbits.RB7=0;
    __delay_us(50);
    PORTB = 0b11000000;
    __delay_us(50);
    PORTBbits.RB7=0;
    __delay_us(100);
}

Como disse no artigo anterior, a solução acabaria por fazer a mina própria biblioteca, assim este artigo é sobre o estado em que se encontra a mesma.
Consegui fazer com que os primeiros caracteres aparecessem no ecrã.
Daí dei um jeito no código "em bruto", para ficar mais flexível e fácil de usar no futuro.
Basicamente o que estou a fazer é a inicialização do LCD, a colocação do cursor num endereço e a escrita de caracteres com incremento automático do endereço do cursor.
Código para utilização do LCD com comunicação a 4 bits.

Rotina de configuração do LCD:
void config_lcd()
{
    // E   RS  RW  D7  D6  D5  D4
    // RB7 RB6 RB5 RB4 RB3 RB2 RB1

    char i;
    char config[7]={
                    0b10000100, //1ª config - 4bits
                    0b10000100, //4bits; 2linhas; 5x8pontos + E
                    0b10010000, //4bits; 2linhas; 5x8pontos + E
                    0b10000000, //E + display ON; mostra cursor; cursor pisca
                    0b10011110, //E + display ON; mostra cursor; cursor pisca
                    0b10000000, //E + cursor incrementa; sem display shift
                    0b10001100, //E + cursor incrementa; sem display shift
                  };

    for(i=0;i<7;i++)
    {
        PORTB = config[i];
        __delay_us(50);
        PORTBbits.RB7=0;
        __delay_us(50);
    }  
}

Rotina de posição do cursor:
void cursor_lcd_pos(char posicao)
{
    /*
     * 00h -> linha 1
     * 40h -> linha 2
     */

    PORTB = ((posicao>>3) & 0b1110) + 0b10010000;
    __delay_us(50);
    PORTBbits.RB7=0;
    __delay_us(50);
    PORTB = ((posicao<<1) & 0b11110) + 0b10000000;
    __delay_us(50);
    PORTBbits.RB7=0;
}

Rotina de escrita no display:
void escrever_lcd(char texto[])
{
    char length, i;

    length=strlen(texto);

    for(i=0;i<length;i++)
    {
        PORTB = ((texto[i]>>3) & 0b11110) + 0b11000000;
        __delay_us(50);
        PORTBbits.RB7=0;
        __delay_us(50);
        PORTB = ((texto[i]<<1) & 0b11110) + 0b11000000;
        __delay_us(50);
        PORTBbits.RB7=0;
        __delay_us(50);
    }
}

Exemplo de código main();
void main()
{
    PIC_init();

    config_lcd();
    cursor_lcd_pos(3);
    escrever_lcd("Ola mundo ");

}

Confirma-se... após uma discução no fórum da microchip, que a melhor opção é fazer a minha própria biblioteca ou funções para comunicar com o módulo LCD.
Este compilador C pode não trazer uma grande quantidade de bibliotecas funcionais (pois leva-me a crer que muitas foram copiadas do hi-tech), mas os Application Notes da microchip são fantásticos.
No entanto, continuei a ter algumas dificuldades em comunicar com o display e só após algumas horas de leitura do datasheet da Hitachi é que comecei a entender o conceito aqui usado.
É realmente muito trabalhoso e demorado comunicar com um LCD sem recorrer a bibliotecas já feitas, mas o desafio era esse mesmo. De realçar que existe o modo de comunicação por 8 bits + E + RS + RW, mas obviamente optei pelo método de 4bits + E + RS + RW, pois desta forma ocupo apenas 7 pinos para ligar ao módulo.
O bom é que com a minha biblioteca "vai fazer" coisas que normalmente não se fazem (pelo menos as que conhecia do CCS)...
O facto de estar a fazer todo o código de raiz faz com que o meu conhecimento acerca do mesmo seja bem maior, assim como um conhecimento mais detalhado dos LCD. Isto vai permitir-me fazer caracteres especiais, símbolos, marcas, etc...
Em futuros projectos, o uso destes LCD's que embora baratos, poderá levar um toque mais personalizado à sua aplicação.
Primeiros caracteres no display começaram a surgir. Nos próximos dias irei postar mais evoluções, até completar uma biblioteca "minima" que me permita iniciar o display, fazer todo o processo de escrita "automaticamente" e fazer a alteração do endereço do cursor .

Até agora, desde que passei a usar o MPLAB XC8, que tenho feito sempre as minhas bibliotecas de raiz (excepto claro as dos MCU) ou  pelo menos todas as funções de raiz.
Este fim de semana apetece-me ligar um PIC16F88 a um LCD 16x2, mas sinceramente não queria escrever tudo de novo, pois o XC8 possui a biblioteca "xlcd.h" para estes casos.
Vamos ver o que consigo fazer ou se vou acabar por fazer todo o código como de costume.
Começa mais uma noite de "auto aprendizagem" :D.

Link para o artigo de Agosto, altura em que comprei 2 LCD:

Embora não tenha muito tempo ultimamente, hoje cheguei a casa e ainda estive a fazer esta pequena montagem.
Trata-se de um pré-amplificador de microfone irá integrar um dos vários pequenos projectos que estão para se realizar.
Tem somente a finalidade de dar ganho a um micro e seguido deste circuito poderia simplesmente colocar-se um LM386 com um altifalante e teríamos uma espécie de "megafone".
Pode ter muitas outras utilidades, como entrada num vuímetro, sensor desliga/liga lâmpada com o bater de palmas, etc... no fundo e como é de esperar, tudo o que de relacionado há com  aquisição de som.