Pesquisar este blog

quinta-feira, 12 de fevereiro de 2015

Computador Nestor 2

NESTOR 2

Faltava eu colocar mais informações e fotos sobre o Nestor 2, projeto de microcomputador com Z80 da revista Nova Eletrônica, com repaginação do Victor Trucco e firmware adaptado pelo Fábio Belavenuto.

Inicialmente eu até tentei montar e testar em protoboard, mas não funcionou a tentativa. Além de ficar muito confuso e sujeito a falhas e mau contato. Vejam a bagunça:
Começou a faltar fiozinho pra fazer as ligações e meu protoboard não foi suficiente para colocar as teclas, portanto o que me levou a montar o Nestor 2 na placa de circuito impresso.

As fotos a seguir são da sequência de montagem:
 
 Placa com os resistores soldados.

Com os botões colocados.

 
Colocação dos soquetes de cis e para os displays e jacks do cassete.

Com os displays de sete segmentos (vermelhos).


 
Quase no final, com os transistores.

Com o conector de força e o cristal (soquetado).
Cristal de 4MHz.


Placa toda montada, com os integrados e ligada com os displays vermelhos. Na verdade, eles ficaram muito fracos na luminosidade, então substitui pelos verdes que vieram no kit, e que são de brilho mais intenso.


A seguir, mostro algumas das funções e como funciona o teclado:
Existem 24 teclas: 16 com os dígitos hexadecimais de 0 a F, e 7 teclas para funções. A primeira tecla é a "P" de permissão. Ela serve para entramos com dados de endereço. Ao apertarmos P, os quatro dígitos da esquerda e os dois da direita se apagam e podemos entrar com um endereço de 4 dígitos hexadecimais ($0000 a $FFFF, ou 0 a 65535 decimal, que é o máximo de endereços de memória que o Z80 pode acessar). Digitando 0000, e em seguida apertamos "L" de leitura, podemos ver o dado nessa posição de memória.


Nestor com displays verdes e mostrando o conteúdo do endereço $0000, que tem $31 (EPROM). Podemos alterar o conteúdo da posição de memória (desde que seja RAM), apenas digitando-se os novos dados no teclado. As informações digitadas correm da direita para esquerda continuamente, de forma que não é necessário se apagar se houver erro na digitação.

As teclas -1 e +1 apenas decrementam ou incrementas a posição de memória em uma posição. 
Apertando +1, o endereço aumenta de 1.





A tecla "R" faz rodar o programa em assembly que estiver no endereço de memória mostrado no display. Esse é um programa na EPROM que mostra uma palavra.

 A tecla "ER" faz com que o conteúdo dos registradores internos do Z80 sejam mostrados.
Inicialmente o valor do registrador A (acumulador).

Apertando ER novamente, mostra o registrador B.

Mais uma vez o ER, e aparece o registrador C. Em sequência serão apresentados os registradores D, E, H, L, F (flags) e I, depois retornando ao acumulador.

 Por fim, a tecla IV, é para definir uma interrupção vetorizada.


Quem precisa de Raspberry Pi ou Arduino ? Isso é para os fracos. Os fortes programam em assembly,  digitando diretamente os opcodes em hexadecimal na mão (he he he).


Até é possível fazer montagens experimentais e interligação com protoboard (como fazem com Arduino e Raspberry Pi) graças ao conector em barra com os sinais do Z80 disponíveis.

Aqui os esquemas do Nestor:
Circuito de geração de clock, circuito de reset e pullups de alguns pinos do Z80. Como eu coloquei um soquete para o cristal, isso permite que eu mude a frequência do clock apenas trocando o cristal. Eu coloquei um cristal de 2MHz para testar alguns Z80 (de 2,5MHz de clock máximo) e com o Z80A deixei com cristal de 4MHz (o original da revista era um de 3,58MHz).

As memórias usadas foram uma 2732 de 4kbytes em EPROM e uma RAM estática 62256 de 32 kbytes.

Circuito de decodificação e seleção de memórias e entrada e saída. O 74LS138 decodifica e seleciona quais chips de memória serão acessados. Os sinais de entrada são: endereços de A13 a A15 e MREQ (pedido de memória). Isso significa que o 74LS138 aciona blocos de memória de 8kbytes em cada saída. A primeira saída aciona a EPROM de 4kbytes ($0000 a $0FFF) sendo que a EPROM fica espelhada nos endereços de $1000 a $1FFF). A RAM fica no espaço de endereços de $2000 a $9FFF, para isso 4 saídas do 74LS138 são combinadas com portas E do 74LS08.

A habilitação de entrada e saída é feita combinado os sinais IORQ (pedido de entrada e saída) com os sinais WR e RD (write e read).

Circuitos de portas de entrada e saída, habilitadas pelos sinais combinados no esquema anterior. Para isso as entradas passam por buffers tri state 74LS126 e os dados de saída ficam disponíveis e guardados em latches 74LS75. Existem dois barramentos de acesso na placa.

Circuito do teclado matricial, acionado por portas de entrada semelhantes ao esquema anterior e usando buffers tri state 74LS126.

Circuito dos displays de catodo comum multiplexados.

Circuito da interface de cassete (gravação e leitura) e do alto falante.

E aqui o firmware a ser gravado na EPROM com o programa monitor básico e de cassete.
:1000000031009CC5D5E5F521E69B36192169001123
:10001000E79B010600EDB031E49B21E79B06001E43
:10002000063E01CD960079871DC2230078FE00CAE6
:10003000170021E79BCDA2007AD303DB01FE00C2AB
:100040003200CDC300CDDE00FE17C25000C3000851
:10005000FE15CA7D00FE10DA8900CDF60021E69B70
:100060007EC36F000000C3F29BC8869287C0CE217A
:100070003203856F7E4F3E0A856F6E61E921E69BF4
:100080007EFE15CAF601C35A0021E69B7EFE15CA04
:10009000070200C35D004FCDAF00DB01FE00C84783
:1000A00051C90E063E01CDAF00870DC8C3A600F5AD
:1000B000D3037ED301D91100011B7AB3C2B900D991
:1000C00023F1C90E003E01BACADC00870E08BACA85
:1000D000DC00870E10BACADC00C3170051C91E0825
:1000E0000E003E01B8CAF1000C871DC2E400C31720
:1000F0000079824700C921E69B70C90E0621E69B64
:10010000361721E79B36FF230DC205013600233643
:1001100000233600C3170021EE9B78ED6F23ED6FAF
:10012000CD5A01C31700CD480121E69B361821EFB7
:100130009BCD5A01C31700CD480178ED6F7E122187
:10014000EF9BCD5A01C3170021EE9B5E23561A2B5D
:100150002B77E521E69B3618E1C901E79BCD7601B7
:100160002BCD76012BCD7601C921EE9B7323722B0B
:100170002B1A77C9FFFF7EE521F09B77AFED6FCD9E
:100180008E010203AFED6FCD8E010203E1C9D511DF
:100190009701835F1AD1C9C0F9A4B0999282F880FF
:1001A000908883C6A1868ECD480113CD690121EFC9
:1001B0009BCD5A01C31700CD48011BCD690121EF2A
:1001C0009BCD5A01C31700FFFFFF3EFFD3033E7FC5
:1001D000D30121ED9B36C331F89BF5E5D5C531E45C
:1001E0009BC3ED9B21E59B36FEC3F60121E79B36C1
:1001F000FF2336FF23C911060321E59B34347B8698
:100200005F1A6F131A67E921E59B111D037B86C3F3
:100210000002CDEC0136882336B721F99BC32002BA
:1002200001EB9BCD7601C3170021F99B78ED6FC3DD
:100230002002CDEC0136832336B721FF9BC3200279
:1002400021FF9B78ED6FC32002CDEC0136C623362B
:10025000B721FE9BC3200221FE9B78ED6FC32002D5
:10026000CDEC0136A12336B721FD9BC3200221FD31
:100270009B78ED6FC32002CDEC0136862336B72183
:10028000FC9BC3200221FC9B78ED6FC32002CDECC8
:100290000136892336B721FB9BC3200221FB9B78C3
:1002A000ED6FC32002CDEC0136C72336B721FA9B90
:1002B000C3200221FA9B78ED6FC32002CDEC0136FA
:1002C0008E2336B721F89BC3200221F89B78ED6F6F
:1002D000C32002ED5721F79B77CDEC0136F9233689
:1002E000B721F79BC3200221F79B78ED6F7EED4786
:1002F000C3200201F29B3EC3020321EE9B7E020358
:10030000237E02C317001202320249026002770202
:100310008E02A502BC02D3021A03C3E401290240E3
:100320000257026E0285029C02B302CA02E702FF74
:10033000FFFF0000000000000000000000000000BF
:10034000000000010101010102010100FB26B7A725
:10035000CAE4F31737170000000000000000000097
:10036000000000000000000000000000000000008D
:10037000000000000000000000000000000000007D
:10038000000000000000000000000000000000006D
:10039000000000000000000000000000000000005D
:1003A000000000000000000000000000000000004D
:1003B000000000000000000000000000000000003D
:1003C000000000000000000000000000000000002D
:1003D000000000000000000000000000000000001D
:1003E000000000000000000000000000000000000D
:1003F00000000000000000000000000000000000FD
:1004000000000000000000000000000000000000EC
:1004100000000000000000000000000000000000DC
:1004200000000000000000000000000000000000CC
:1004300000000000000000000000000000000000BC
:1004400000000000000000000000000000000000AC
:10045000000000000000000000000000000000009C
:10046000000000000000000000000000000000008C
:10047000000000000000000000000000000000007C
:10048000000000000000000000000000000000006C
:10049000000000000000000000000000000000005C
:1004A000000000000000000000000000000000004C
:1004B000000000000000000000000000000000003C
:1004C000000000000000000000000000000000002C
:1004D000000000000000000000000000000000001C
:1004E000000000000000000000000000000000000C
:1004F00000000000000000000000000000000000FC
:1005000000000000000000000000000000000000EB
:1005100000000000000000000000000000000000DB
:1005200000000000000000000000000000000000CB
:1005300000000000000000000000000000000000BB
:1005400000000000000000000000000000000000AB
:10055000000000000000000000000000000000009B
:10056000000000000000000000000000000000008B
:10057000000000000000000000000000000000007B
:10058000000000000000000000000000000000006B
:10059000000000000000000000000000000000005B
:1005A000000000000000000000000000000000004B
:1005B000000000000000000000000000000000003B
:1005C000000000000000000000000000000000002B
:1005D000000000000000000000000000000000001B
:1005E000000000000000000000000000000000000B
:1005F00000000000000000000000000000000000FB
:1006000000000000000000000000000000000000EA
:1006100000000000000000000000000000000000DA
:1006200000000000000000000000000000000000CA
:1006300000000000000000000000000000000000BA
:1006400000000000000000000000000000000000AA
:10065000000000000000000000000000000000009A
:10066000000000000000000000000000000000008A
:10067000000000000000000000000000000000007A
:10068000000000000000000000000000000000006A
:10069000000000000000000000000000000000005A
:1006A000000000000000000000000000000000004A
:1006B000000000000000000000000000000000003A
:1006C000000000000000000000000000000000002A
:1006D000000000000000000000000000000000001A
:1006E000000000000000000000000000000000000A
:1006F00000000000000000000000000000000000FA
:1007000000000000000000000000000000000000E9
:1007100000000000000000000000000000000000D9
:1007200000000000000000000000000000000000C9
:1007300000000000000000000000000000000000B9
:1007400000000000000000000000000000000000A9
:100750000000000000000000000000000000000099
:100760000000000000000000000000000000000089
:100770000000000000000000000000000000000079
:100780000000000000000000000000000000000069
:100790000000000000000000000000000000000059
:1007A0000000000000000000000000000000000049
:1007B0000000000000000000000000000000000039
:1007C0000000000000000000000000000000000029
:1007D0000000000000000000000000000000000019
:1007E0000000000000000000000000000000000009
:1007F00000000000000000000000000000000000F9
:100800003E0032599B214B0A115A9B010600EDB064
:10081000215A9B06001E063E01CD960079871D20B9
:10082000F878FE0028EA215A9BCDA2007AD303DB98
:1008300001FE0020F1CDC300CDDE00FE14CA640825
:10084000FE103810FE132803C310083A599BFE000F
:10085000CA5B09C73A599BFE00282FFE012830FECB
:10086000022831C73A599BFE002809FE012810FED4
:10087000022844C721510A3E0132599BC30808216E
:10088000570A3E0232599BC3080821509B18082181
:10089000529B180321549B3EFF325E9B325F9B7834
:1008A000E5ED6F23ED6F015C9BE1CD760123015AED
:1008B0009BCD7601C310083EFFD3033EF7D301CD95
:1008C000EC08DA2F0A32569B21A00FCD43092150A4
:1008D0009B010700CD0C0921D007CD4709CDF908B0
:1008E000CD0C0921A00FCD4709C3370ACDF908D88F
:1008F000AF86EDA1EAF108B7C921529B5E235623CA
:100900004E236669B7ED524D4403EBC95ECD16091F
:10091000EDA1EA0C09C91608B7CD2909CB1BCD29D1
:10092000091520F837CD2909C9D9260038092E081C
:10093000CD47092E0218072E04CD47092E04CD43BA
:1009400009D9C90E9A18020E40291101003EFFD3A1
:10095000044110FEEE01ED5220F5C93EFF325E9BD0
:10096000325F9B2A509B22579B3EFFD3033EBFD34F
:100970000121E803CDD70938F02B7CB520F6CDD77F
:100980000930FB21509B010700CDF40938DB015CE5
:100990009B21509BCD760123015A9BCD7601ED5BC7
:1009A000509B0620215A9BCDA20010F82A579B008D
:1009B000B7ED52C269093EFFD3033EFED301CDF924
:1009C00008DA2F0ACDF409DA2F0ACDEC0821569B5C
:1009D000BEC22F0AC3370A110000DB0213CB1F3837
:1009E000F93E00D304DB0213CB1F30F93EFFD304E2
:1009F0007BFE42C9AF08CD010A73EDA1EAF60908F2
:100A0000C9CD120A1608CD120ACB1B1520F8CD123B
:100A10000AC9D9210000CDD70938062D2DCBC4181D
:100A2000F52CCB4428F0CB15D9C9083708D9C921F2
:100A30003F0ACDA20018F821450ACDA20018F88679
:100A4000CECEC0FFFF8EF9C8FFFFFF87F987C1C771
:100A5000C08EC0C88786FF8EF9C888C7FF00000017
:100A60000000000000000000000000000000000086
:100A70000000000000000000000000000000000076
:100A80000000000000000000000000000000000066
:100A90000000000000000000000000000000000056
:100AA0000000000000000000000000000000000046
:100AB0000000000000000000000000000000000036
:100AC0000000000000000000000000000000000026
:100AD0000000000000000000000000000000000016
:100AE0000000000000000000000000000000000006
:100AF00000000000000000000000000000000000F6
:100B000000000000000000000000000000000000E5
:100B100000000000000000000000000000000000D5
:100B200000000000000000000000000000000000C5
:100B300000000000000000000000000000000000B5
:100B400000000000000000000000000000000000A5
:100B50000000000000000000000000000000000095
:100B60000000000000000000000000000000000085
:100B70000000000000000000000000000000000075
:100B80000000000000000000000000000000000065
:100B90000000000000000000000000000000000055
:100BA0000000000000000000000000000000000045
:100BB0000000000000000000000000000000000035
:100BC0000000000000000000000000000000000025
:100BD0000000000000000000000000000000000015
:100BE0000000000000000000000000000000000005
:100BF00000000000000000000000000000000000F5
:100C000000000000000000000000000000000000E4
:100C100000000000000000000000000000000000D4
:100C200000000000000000000000000000000000C4
:100C300000000000000000000000000000000000B4
:100C400000000000000000000000000000000000A4
:100C50000000000000000000000000000000000094
:100C60000000000000000000000000000000000084
:100C70000000000000000000000000000000000074
:100C80000000000000000000000000000000000064
:100C90000000000000000000000000000000000054
:100CA0000000000000000000000000000000000044
:100CB0000000000000000000000000000000000034
:100CC0000000000000000000000000000000000024
:100CD0000000000000000000000000000000000014
:100CE0000000000000000000000000000000000004
:100CF00000000000000000000000000000000000F4
:100D000000000000000000000000000000000000E3
:100D100000000000000000000000000000000000D3
:100D200000000000000000000000000000000000C3
:100D300000000000000000000000000000000000B3
:100D400000000000000000000000000000000000A3
:100D50000000000000000000000000000000000093
:100D60000000000000000000000000000000000083
:100D70000000000000000000000000000000000073
:100D80000000000000000000000000000000000063
:100D90000000000000000000000000000000000053
:100DA0000000000000000000000000000000000043
:100DB0000000000000000000000000000000000033
:100DC0000000000000000000000000000000000023
:100DD0000000000000000000000000000000000013
:100DE0000000000000000000000000000000000003
:100DF00000000000000000000000000000000000F3
:100E000000000000000000000000000000000000E2
:100E100000000000000000000000000000000000D2
:100E200000000000000000000000000000000000C2
:100E300000000000000000000000000000000000B2
:100E400000000000000000000000000000000000A2
:100E50000000000000000000000000000000000092
:100E60000000000000000000000000000000000082
:100E70000000000000000000000000000000000072
:100E80000000000000000000000000000000000062
:100E90000000000000000000000000000000000052
:100EA0000000000000000000000000000000000042
:100EB0000000000000000000000000000000000032
:100EC0000000000000000000000000000000000022
:100ED0000000000000000000000000000000000012
:100EE0000000000000000000000000000000000002
:100EF00000000000000000000000000000000000F2
:100F000000000000000000000000000000000000E1
:100F100000000000000000000000000000000000D1
:100F200000000000000000000000000000000000C1
:100F300000000000000000000000000000000000B1
:100F400000000000000000000000000000000000A1
:100F50000000000000000000000000000000000091
:100F60000000000000000000000000000000000081
:100F70000000000000000000000000000000000071
:100F80000000000000000000000000000000000061
:100F90000000000000000000000000000000000051
:100FA0000000000000000000000000000000000041
:100FB0000000000000000000000000000000000031
:100FC0000000000000000000000000000000000021
:100FD0000000000000000000000000000000000011
:100FE0000000000000000000000000000000000001
:100FF00000000000000000000000000000000000F1
:00000001FF



terça-feira, 27 de janeiro de 2015

Duplicador de Eprom

DUPLICADOR DE EPROM


Há muito tempo eu precisava fazer uma cópia de uma EPROM (a do NESTOR, pois eu tenho duas placas) e como não tenho gravador de EPROMs, resolvi fazer um circuitinho bem simples e barato para fazer essa duplicação.
Estudando um pouco o processo de gravação de uma 2716, apenas necessitamos de uma fonte de 25V para o pino Vpp (além evidentemente de uma de 5V para alimentação normal) e gerar pulsos de 50ms com amplitude de 5V, estando os dados e o endereço de gravação presentes nos respectivos barramentos da EPROM.
A ideia é gerar os endereços automaticamente e fazer com que os dados da EPROM original sejam jogados no barramento de dados da EPROM cópia. Os bits de endereço serão iguais nas duas EPROMs.
Para gerar esses endereços, nada melhor do que um microcontrolador e para isso escolhi o PIC 16F628 que possui o número de portas suficiente para gerar os 11 bits de endereço necessários (na verdade eu deixei 12 portas reservadas pra isso) e mais o sinal de pulso de programação, um de controle de chip enable (da EPROM original) e dois botões para comando (um de reset do PIC e outro para iniciar a programação). Como o 16F628 tem oscilador interno, não preciso usar cristal externo e disponibilizo assim 16 portas no total, justinho para o que preciso.
O firmware que escrevi é bem simples: inicializo o PIC e fico esperando o aperto do botão PROGRAMA, que simplesmente habilita a EPROM original abaixando a linha de CE (chip enable ou select), e um contador de endereços de 0 a 2047 (capacidade de endereços da 2716). A cada endereço, jogo um pulso de 50ms no pino PGM da EPROM cópia (que também faz acender um led indicando que a programação está em curso), incremento o endereço e repete-se o ciclo até a contagem chegar a 2047. Ao final desabilita-se o CE e termina o programa.

O esquema é o seguinte:



O firmware para o PIC 16F628:
:10000000412883178001840AFF3E031D02283C28F3
:10001000A301A200FF30A207031CA307031C3C2876
:100020000330A100DF3016200A28A101E83EA0001D
:10003000A109FC30031C1F28A00703181C28A007D7
:100040006400A10F1C2820182528A01C29280000C6
:1000500029280800A2000530A80023082102031D5A
:10006000332822082002043003180130031902301B
:100070002805031DFF303C288313031383126400FB
:1000800008008316303085008601831207309F00F8
:10009000860180308500C830082020308400603020
:1000A0000220A03084005030022020308400303004
:1000B00001206400051A5D285E284B283808860058
:1000C00039180514391C0510B9188514B91C851088
:1000D00039190515391D0511B9198515B91D851170
:1000E0008513013008200517323008200513B80A9F
:1000F0000319B90AA0010830A1003908A300380883
:100100002A20031D842885285E28851785286300FA
:0201100087283E
:02400E00703F01
:00000001FF


Eu fiz a montagem em protoboard, por isso a bagunça de fios que mal dá pra ver as memórias e o PIC. Pra ajudar eu coloquei um 74LS244 (buffer octal) e 8 leds pra visualizar os dados (eles ficam piscando a medida que a cópia acontece) e saber que a coisa funciona. Ao final, posso pegar a cópia e colocar no lugar da original e ver se a gravação foi feita, basta apertar o botão PROGRAMA.

A seguir a versão e as ligações para duplicar uma 2732A. As diferenças são que a tensão Vpp de programação deve ser de 21V e o pulso de programação também é de 50ms, mas um pulso negativo (ativo em nível baixo). Adicionalmente, a linha de endereço A11 precisa ser usada (ela é de 4kbytes).

E o firmware para o PIC 16F628:

:10000000412883178001840AFF3E031D02283C28F3
:10001000A301A200FF30A207031CA307031C3C2876
:100020000330A100DF3016200A28A101E83EA0001D
:10003000A109FC30031C1F28A00703181C28A007D7
:100040006400A10F1C2820182528A01C29280000C6
:1000500029280800A2000530A80023082102031D5A
:10006000332822082002043003180130031902301B
:100070002805031DFF303C288313031383126400FB
:1000800008008316303085008601831207309F00F8
:100090008601C0308500C8300820203084006030E0
:1000A0000220A03084005030022020308400303004
:1000B00001206400051A5D285E284B283808860058
:1000C00039180514391C0510B9188514B91C851088
:1000D00039190515391D0511B9198515B91D851170
:1000E0008513013008200513323008200517B80A9F
:1000F0000319B90AA0011030A1003908A30038087B
:100100002A20031D842885285E28851785286300FA
:0201100087283E
:02400E00703F01
:00000001FF



sexta-feira, 5 de dezembro de 2014

Coleção de Microprocessadores

Coleção de Microprocessadores


No passado eu colecionei fascículos de uma enciclopédia da antiga Rio Gráfica Editora - Microcomputador Curso Prático, que depois se tornaram dois volumes muito interessantes e ricamente ilustrados. Num dos artigos, sobre a história dos microprocessadores, havia um quadro evolutivo (até então) dos principais microprocessadores usados, quadro do qual eu tirei uma foto que é a abaixo:




Tem gente que coleciona computadores velhos, mas isso demanda muito espaço e dinheiro (tá eu tenho alguns computadores velhos ... :o)  ), então é mais fácil e barato colecionar apenas as CPUs usadas nos computadores antigos.  Dos que serviam para computadores pessoais, eu consegui os mais importantes e que contam  a história da microcomputação dos anos 1970 e 1980. Vejam a foto das minhas CPUs:


Bom, seguindo a ordem do quadro da enciclopédia, mostro as fotos das minhas CPUs e descrevo alguns equipamentos onde elas foram usadas:


Esse era o Motorola MC6800, um processador de 8 bits. Foi usado no MITS Altair 680.  O MC6800 foi projetado em 1974, mesma época do processador a seguir.


O Intel 8080 foi o segundo microprocessador de 8 bits da Intel. Esse processador influenciou toda uma família de CPUs, incluindo o Z80 da Zilog e os seus sucessores na Intel.  O 8080 foi usado no MITS Altair 8800, um dos primeiros computadores pessoais e também nos videogames Arcade, incluindo o jogo Space Invaders. Com o 8080 foi desenvolvido o sistema operacional CP/M.



Acima tenho dois 6502, que foram as CPUs dos Apple 1, Apple II, Commodore PET e eram as CPUs mais baratas na época (por isso a Apple o escolheu). Aqui no Brasil foi usado no TK2000.
A CPU menor 6507 era uma versão encolhida do 6502 e foi o processador dos videogames ATARI 2600. 




O processador seguinte da Intel foi o 8085, que era compatível com o 8080 em software, mas melhor em hardware. O 8085 foi usado no TRS-80 model 100, um precursor dos micros portáteis.



A evolução da Motorola se deu com o MC6809. Esse processador foi usado pelos TRS - Color Computer (aqui CP400).



Talvez o mais famoso dos processadores de 8 bits, o Zilog Z80 foi o processador usado em muitos computadores da época: TRS-80 (clone CP300), Sinclair ZX80, ZX81 (e os clones nacionais TK82C, TK83, TK85, Ringo, CP200), ZX Spectrum (TK90X e TK95), CP500, os MSX (aqui Hotbit e Expert) e em diversos videogames (Gameboy com LR35902 da Sharp similar ao Z80, Master System, Mega Drive). Por ser compatível com o 8080 em software, podia usar o CP/M e até no Apple II foi usado com uma placa com Z80.




Entrando na era dos 16 bits, a Intel lançou a família 8086. Na foto eu tenho os 8088 que foram os processadores dos IBM Personal Computers (PC, XT) e que levaram a Intel à liderança de mercado até os dias de hoje. O Chip com o quadrado dourado é um 8087, coprocessador matemático usado com os 8088 e 8086.  O NEC V20 era uma versão mais avançada do 8088, tinha uma performance melhor e podia emular o funcionamento do 8080. Eu tenho um laptop Toshiba T1000 com um 80C88, versão CMOS do 8088.



A Motorola também desenvolveu de processadores de maior desempenho e lançou esse chipão de 64 pernas, o MC68000 de 16 e 32 bits. Junto na foto, o MC68008 com 48 pernas, uma versão mais simples do 68000.  O 68000 foi o processador dos Apples Lisa e MacIntosh, Atari ST, Amiga e também muito usado em Workstations Unix. Foi o processador do videogames Mega Drive (junto com o Z80). O 68008 foi usado no Sinclair QL (Quantum Leap).


Esses dois processadores não estão no quadro da enciclopédia, mas eu tenho esses chips da RCA e da Harris, que são o processador CDP1802 ACE de 8 bits e tecnologia CMOS, o que faz com que eles tenham um baixo consumo de energia. Por isso foram usados em sondas espaciais e num computador chamado COSMAC ELF que saiu na revista Popular Electronics.

quarta-feira, 15 de outubro de 2014

Irrigador automático programável

Sistema para Irrigação Automática de Plantas

Precisei bolar um sistema para regar automaticamente alguns pés de pimenta que plantei, enquanto estiver viajando, já que as pimenteiras precisam ser regadas todos os dias. Isso é um equipamento baseado em timers que ligariam uma bomba elétrica por determinado tempo e somente depois de um intervalo voltariam a ser acionados. Esses equipamentos existem comercialmente, mas são muito caros e não seriam difíceis de serem montados. 
O circuito em si não tem nada de novo, apenas um microcontrolador PIC com alguns botões para programar os tempos, um relé para ligar o motor da bomba e um display para enxergar as coisas (programação de tempos, contagem, etc).
A bomba escolhida foi dessas de fontes decorativas, que trabalham submersas na água e tem alimentação diretamente na rede elétrica (127Vac ou 220Vac). Comprei uma com vazão de 220 litros por hora com pressão para até 0,5 metro de diferença. Ela tem também um ajuste de vazão e saída para mangueira de 5 mm interna.  Comprei também alguns Ts (divisores de ar para aquários) com torneirinha que ajudam a regular a quantidade de água que vai para cada derivação nas mangueiras siliconadas de diâmetro 5 mm externo.

Acima o esquema elétrico. O display é um desses de 16 x 2 linhas comum, o relé é um de 5V ou de 12V (dependendo de onde o ligamos na fonte) As chaves podem ser do tipo push-buttons normalmente abertas, eu usei chaves alavanca spdt que fica NA,  onde a primeira serve como duplo comando (reset e botão 1) e as demais apenas para um comando. Usei uma placa universal, portanto não desenhei um layout para uma placa de circuito impresso. 

Acima uma foto do controlador timer com a bomba de água, as mangueiras e os divisores de ar. Essa configuração me permite 6 saídas de água. 

Detalhe dos divisores de ar e das 6 saídas de água.

O controlador dentro de uma caixa de plástico Patola PB112, mostrando o menu inicial (setup: configura o tempo de acionamento da bomba, o intervalo entre as regas e se inicia regando)

Display indicando que a bomba está acionada (led aceso). Na tomada devemos ligar o plugue da bomba de água. 

O código Hexa para o PIC (16F628) é o seguinte:
:10000000B20147290408A70006108610861083163F
:100010000610861086100F30860583122708B21846
:100020002E283A30A100FC30DF203330A6004220D9
:100030001030A1006830DF2042206430DE20223002
:10004000A600422028302D200C302D2001302D20FC
:1000500006302D20B21427082E283214A600321C98
:100060003C288610033C031C412841200730A10096
:10007000D030DF20031408003214FE3C031942295B
:100080008614321C321006140F3086052608F0390B
:1000900086040610A60E321842283230DE200314E1
:1000A0000800B31329080319B3170530A800273037
:1000B000A300103067200330A300E8306720A301BD
:1000C00064306720A3010A30672024086E28A2004C
:1000D0002508A1002408A0000B212008A000A803E7
:1000E0000319B313290803197828280203180800F4
:1000F0002008031DB313B31B0800303E3D29A300A5
:10010000360884008417340980058413A308031972
:100110004229F030A50022088038A400F030A50361
:100120000319A5000319A303031942299728AE2038
:10013000030120183408A21F3408A2080319030180
:10014000A40FA42880068B28A52800008E288317DA
:100150008001840AFF3E031DA828422921082004AB
:100160000319A00A8030201AA1062019A106A018A0
:10017000A106210DA00DA10D422983161C141A08F9
:1001800083169B0A4229030183169A001C155530D9
:100190009D00AA309D009C149C18CC281C119B0A21
:1001A0004229A301A200FF30A207031CA307031CDE
:1001B00042290330A100DF30DF20D328A101E83E2F
:1001C000A000A109FC30031CE828A0070318E528BB
:1001D000A0076400A10FE5282018EE28A01CF22833
:1001E0000000F2280800A2000130FB28A20006301F
:1001F000FB28A2000530A80023082102031D0229C4
:1002000022082002043003180130031902302805A7
:10021000031DFF304229A501A4011030A600210DC5
:10022000A40DA50D2208A4022308031C230FA50278
:10023000031821292208A40723080318230FA50760
:100240000310A00DA10DA60B0F2920084229103084
:10025000A800A101A001A70CA60C031C35292208A7
:10026000A00723080318230FA107A10CA00CA50CBD
:10027000A40CA80B2B2924084229840031088A00E9
:10028000300882008313031383126400080083166E
:10029000FE3085008601831207309F0020308400E5
:1002A0006030A820A03084005030A8202030840086
:1002B0003030A720FE3003200130032049300320D6
:1002C000723003207230032069300320673003202E
:1002D00061300320643003206F300320723003202C
:1002E0002030032061300320753003207430032058
:1002F0006F3003206D30032020300320FE300320B8
:10030000C0300320613003207030032065300320AB
:100310007230032074300320653003202030032026
:100320003130032020300320703003202F30032091
:10033000203003206D300320653003206E30032011
:100340007530032064008518A829FA30D120D629F9
:10035000C20A0319C30A6030A000EA30A1004308B2
:10036000A3004208F920031DD32983169B018312A1
:10037000BD20C900831601309B008312BD20BE0042
:10038000831602309B008312BD20BF00831603300A
:100390009B008312BD20BA00831604309B00831299
:1003A000BD20BB00732C6430DE20A2290630B600CD
:1003B0000830B4006430A2000A307F2083169B010D
:1003C0008312BD20C900831601309B008312BD201B
:1003D000BE00831602309B008312BD20BF0083162F
:1003E00003309B008312BD20BA00831604309B00AB
:1003F0008312BD20BB00FE300320013003205330A8
:1004000003206530032074300320753003207030E2
:100410000320203003203D3003203E3003202030D5
:100420000320623003206F300320743003206130DA
:1004300003206F3003202030032031300320FE30B2
:100440000320C0300320493003206E300320693080
:1004500003206330032069300320613003203D30E6
:1004600003203E30032020300320623003206F3011
:10047000032074300320613003206F3003202030CC
:1004800003203230032064008518492AFA30D12035
:10049000502A640005194F2AFA30D120732C432AC0
:1004A000BE01BF01FE300320013003205430032081
:1004B000653003206D300320703003206F3003203F
:1004C0002030032069300320723003207230032073
:1004D000693003206730032061300320633003203C
:1004E000613003206F30032020300320FE300320D2
:1004F000C0300320A9013E08A4003F08A500023037
:10050000B000B1015120203003207330032065304A
:10051000032067300320753003206E3003206430E1
:1005200003206F300320733003206430D120640037
:100530008519BF2AFA30D1200A30BE070318BF0A36
:10054000FE300320C0300320A9013E08A4003F086C
:10055000A5000230B000B1015120203003207330DB
:1005600003206530032067300320753003206E3090
:100570000320643003206F300320733003206400B5
:100580000519E62AFA30D120BE0A0319BF0AFE3047
:100590000320C0300320A9013E08A4003F08A500A5
:1005A0000230B000B101512020300320733003200D
:1005B0006530032067300320753003206E30032040
:1005C000643003206F3003207330032064008518EB
:1005D0000C2BFA30D120BE01BF01FE300320C03009
:1005E0000320A9013E08A4003F08A5000230B00086
:1005F000B1015120203003207330032065300320E7
:1006000067300320753003206E30032064300320F0
:100610006F300320733003206400051A1E2BFA305C
:10062000D120831601309B0083123E08C42083161C
:1006300002309B0083123F08C4201F2B972ABA0167
:10064000BB01FE300320013003205430032065300D
:1006500003206D300320703003206F3003202030E2
:100660000320693003206E3003207430032065308E
:1006700003207230032076300320613003206C3079
:1006800003206F3003203A300320FE300320C030B7
:100690000320A9013A08A4003B08A5000230B000DD
:1006A000B1015120203003206D3003206930032038
:1006B0006E30032075300320743003206F30032028
:1006C000733003206430D120640085197C2BFA300C
:1006D000D1203A08A0003B08A100A3013B30F6203E
:1006E000031D772B3C30BA070318BB0A7B2B0A305B
:1006F000BA070318BB0AAE2364000519932BFA301E
:10070000D1203A08A0003B08A100A3013B30F6200D
:10071000031D8F2B0530BA070318BB0A922BBA0AA8
:100720000319BB0AAE23640085189B2BC830D12067
:10073000BA01BB01AE236400051AAD2BC830D1202D
:10074000831603309B0083123A08C42083160430BA
:100750009B0083123B08C420112C642B3A08A00094
:100760003B08A1003C30A200A3010B21B8002108E6
:10077000B9003808A6003908A7003C30A200A30140
:100780002721C0002508C10040083A02BC004108EA
:10079000031C013E3B02BD00FE300320013003205C
:1007A00054300320653003206D3003207030032067
:1007B0006F30032020300320693003206E30032087
:1007C000743003206530032072300320763003201C
:1007D000613003206C3003206F3003203A30032057
:1007E000FE300320C0300320A9013808A4003908D6
:1007F000A5000230B000B101512068300320203044
:100800000320A9013C08A4003D08A5000230B00067
:10081000B10151206D300320693003206E30032078
:100820000800FE30032001300320493003206E30E1
:1008300003206930032063300320693003206130D6
:1008400003202030032061300320673003207530FF
:100850000320613003206E300320643003206F30AA
:100860000320203003203F300320FE300320C0301F
:10087000032033300320203003203D30032020307C
:10088000032073300320693003206D3003202030B3
:1008900003202030032034300320203003203D305B
:1008A0000320203003206E300320613003206F309E
:1008B000032064008519662CFA30D1200130C9006C
:1008C00083169B0183124908C420D6296400051AA7
:1008D000722CFA30D120C90183169B01831249087A
:1008E000C420D629592C0630B6000830B400643034
:1008F000A2000A307F2064004908013C031D812CBE
:100900001C25C201C3014208A0004308A1003B0806
:10091000A3003A08F320031D1A2D42083A02C6002C
:100920004308031C013E3B02C7004608A0004708DD
:10093000A1003C30A200A3010B21B8002108B9009E
:100940003808A6003908A7003C30A200A3012721DF
:10095000C0002508C10040084602BC004108031C35
:10096000013E4702BD00FE30032001300320463027
:100970000320613003206C30032074300320613089
:1009800003206E300320643003206F3003202030BA
:10099000032020300320203003202030032020308B
:1009A0000320203003202030032020300320FE309D
:1009B0000320C0300320A9013808A4003908A5008D
:1009C0000230B000B10151206830032020300320F4
:1009D000A9013C08A4003D08A5000230B000B10107
:1009E00051206D300320693003206E300320C40194
:1009F000C5014408A0004508A100A3013B30F32035
:100A0000031D162D06150130A300F330D22064001B
:100A1000051A0D2DFA30D120D62906110130A30078
:100A2000F330D220C40A0319C50FF92CC20A0319E6
:100A3000C30F832C1C25812C0630B6000830B4006F
:100A40006430A2000A307F20051400000615C201A0
:100A5000C3014208A0004308A1003F08A3003E08CC
:100A6000F320031D8A2DFE3003200130032049307E
:100A70000320723003207230032069300320673076
:100A80000320613003206E300320643003206F3078
:100A900003202E3003202E3003202E3003202E3052
:100AA00003202E3003202E3003202E300320FE3072
:100AB0000320C0300320A9014208A4004308A50078
:100AC0000230B000B10151202030032073300320E8
:100AD0006530032067300320753003206E3003201B
:100AE000643003206F300320733003202030032054
:100AF00020300320203003200330A300E730D22031
:100B000064008518862DFA30D120D629C20A03192F
:100B1000C30F292D051000000611080063008E2D5B
:02400E00613F10
:00000001FF

O funcionamento é simples, ao ligarmos o controlador na tomada, ele inicia mostrando a opção para entrar no menu de opções e se nada for feito, ele entra em modo de operação automaticamente após alguns segundos (para o caso de faltar energia). No menu podemos selecionar o tempo de rega, com o botão 2 aumentando o tempo de 1 em 1s e o botão 3 aumenta em 10s. O botão 1 limpa o tempo e o botão 4 aceita o tempo. A seguir escolhemos o tempo de intervalo, o botão 2 aumenta de 1 minuto e o botão 3 aumenta 10 min e depois passa para horas (o botão 2 passa a aumentar de 5 minutos). De novo o  botão 1 limpa o tempo e o botão 4 aceita o intervalo. Finalmente se tem a opção para iniciar os ciclos com uma rega inicial ou não.  O botão reset sempre reinicializa o controlador, enquanto o botão 4 interrompe o ciclo e volta para o menu. No menu temos a opção para iniciar o ciclo.  Os tempos programados são guardados na memória EEPROM do PIC e portanto são recuperados mesmo com falta de energia.



segunda-feira, 15 de setembro de 2014

Hi End Show 2014

Visita ao Hi End Show de 2014


Este último fim de semana visitei o Hi End show 2014 novamente no hotel Maksoud Plaza, e posto aqui algumas fotos dos equipamentos que achei mais interessantes.


Acima um amplificador de potência da Dan Dagostino, com um lindo medidor de potência analógico na frente e dissipadores de calor de cobre nas laterais com furos para melhor ventilação.



Um toca fitas de rolo que tocava músicas nas audições de alguns equipamentos.


O pequeno amplificador valvulado da CAV (China) com dock station e dois canais estéreo de 2W.


Acima a gigantesca caixa acústica da Diasound (produzida no Brasil em Goiás), maior do que eu.


O amplificador estéreo valvulado integrado da Audionote aberto e com dois grandes transformadores de saída à mostra. Circuito muito bem construído.


Outro amplificador valvulado da Audionote, com grandes válvulas triodo na saída.


Um dos belos amplificadores valvulados da Triode (Japão) à venda na mostra.


E o pequeno amplificador valvulado Ruby da Triode, com válvulas EL84 (6BQ5) nas saídas. Uma jóia, como o próprio nome indica.


sábado, 31 de maio de 2014

Amplificador Compactron

Amplificador valvulado com a 6AS11 Compactron - 1W de potência em single ended


Resolvi alterar o amplificador com a 6AS11 pra usar um transformador de força e usar uma fonte de alta tensão convencional de forma a aumentar a potência de saída do amplificador, assim como usar uma malha de realimentação para melhorar a estabilidade e aumentar a resposta em frequência.
Também fiz uma nova montagem, agora usando um chassis de alumínio e os componentes soldados certinhos em mini plaquinhas com ilhoses.
Segue o novo esquema:























Nesse esquema existem as tensões medidas no circuito e assim podemos também ter uma ideia das correntes em cada válvula. A polarização do pentodo ficou em 5,9V, o que nos deixa com uma corrente de catodo de 27mA dos quais uns 22mA de corrente de placa e o restante pela grade de screen, em modo ultra linear.
Com esse circuito consegui obter 8Vpp a 1kHz sem muita distorção sobre uma carga de 8 ohms resistiva. Isso dá uma potência de 1W.  Esse valor cai bastante quando o sinal for abaixo dos 200Hz, o transformador de saída é pequeno (3/4 polegada) e não consegue uma potência significativa sem distorção. Na faixa superior a resposta é bem razoável, chegando a 10kHz.

Cabe ressaltar que ainda deixei de usar um triodo que sobrou na 6AS11 (ela tem dois triodo e um pentodo), o que permitiria fazer mais um estágio de ganho e talvez colocar um controle de tom. Pra um mini amplificador de guitarra, com apenas uma válvula seria possível montar um amplificador quase completo.

Vejam fotos do circuito montado:

















E abaixo alguns oscilogramas, pra quem quiser ver o que acontece com a saturação progressiva da válvula e a distorção resultante (diferente do clipping de um amplificador transistorizado):






sexta-feira, 16 de maio de 2014

Injetor de Sinais


Injetor de Sinais microcontrolado

Mais um projeto simples para gerar sinais de áudio para teste, dessa vez usando um microcontrolador pequeno e barato, o PIC 12F629, que tem apenas 8 pinos em encapsulamento DIP. Desses 8 pinos, 6 são usados para acesso às portas de entrada e saída. A ideia é usar 5 portas de saída para gerar níveis que serão convertidos em sinal analógico por uma rede resistiva ponderada. A porta restante será usada como entrada para um botão que selecionará as frequências do sinal geral. Escolhi gerar 60Hz, 400Hz, 1kHz e 1,5kHz (máximo) selecionados apertando o botão sequencialmente e em círculo (volta aos 60Hz após 1500Hz).
Com 5 bits de faixa dinâmica podemos gerar 32 níveis analógicos que formarão o sinal analógico, como as saídas do PIC geram somente sinais lógicos TTL, ao final da conversão teremos um nível DC positivo somado ao sinal, que deverá ser acoplado ao dispositivo em teste por um capacitor de saída para retirar o nível DC. Os 32 degraus podem ser suavizados usando-se mais uma rede RC como filtro, mas que vai atenuar o sinal final.
A técnica para gerar as senóides aqui não foi a de DDS, apenas vario o tempo entre cada amostra (20 amostras com valores tabelados) de forma a aumentar ou diminuir o período do sinal. O 12F629 tem muito pouca memória pra se implementar DDS.
Como conversor D-A (digital-analógico) optei por usar resistores com ponderação ao invés de usar uma rede R-2R porque não seriam muitos bits a converter, então são poucos valores a ponderar. Como cada bit deve ter o dobro da ponderação do bit menos significativo subsequente, os resistores escolhidos foram: 510 ohms, 1kohms, 2kohms, 3,9kohms e 8,2kohms.  Haverá um pequeno erro na ponderação, mas a aplicação não é para testes e medições de distorção harmônica, apenas para ter um sinal mais perto de senoidal do que quadrado (usado na maioria dos injetores de sinal simples).

O esquema é o seguinte:

Todo o circuito pode ser montado em uma pequena plaquinha universal e acomodado em uma caixinha.
As frequências podem sofrer um pequeno desvio devido ao fato de o PIC ser configurado com o oscilador interno que não é muito preciso, mas obtive valores bem próximos dos desejados (medidos com um frequêncimetro rudimentar de 3 dígitos embutido no meu laboratoriozinho digital):




Finalmente uma foto do sinal no "osciloscópio" do Gameboy. Esse sinal é de 1kHz obtido da saída 2 (após o filtro RC) com 1Vpp.  Na saída 1 é possível obter um sinal com 4Vpp.

E aqui a montagem final numa plaquinha universal:


Um vídeo com os sinais gerados e visualizados no osciloscópio, onde é possível ver os degraus da onda:
http://youtu.be/NWpha4t2pMU

Pra finalizar o firmware pra ser gravado no PIC:
:100000002828A301A200FF30A207031CA307031C9A
:1000100023280330A100DF300F200328A101E83E90
:10002000A000A109FC30031C1828A00703181528FC
:10003000A0076400A10F152820181E28A01C222844
:1000400000002228080083130313831264000800B1
:10005000073099008316083085008312850103302C
:10006000BC003030B800B901203085003908A1004B
:1000700038080F20243085003908A10038080F20E7
:10008000313085003908A10038080F203430850050
:100090003908A10038080F20363085003908A10042
:1000A00038080F20373085003908A10038080F20A4
:1000B000363085003908A10038080F20343085001B
:1000C0003908A10038080F20313085003908A10017
:1000D00038080F20243085003908A10038080F2087
:1000E000203085003908A10038080F201330850022
:1000F0003908A10038080F20063085003908A10012
:1001000038080F20033085003908A10038080F2077
:10011000013085003908A10038080F208501390811
:10012000A10038080F20013085003908A1003808E7
:100130000F20033085003908A10038080F20063051
:1001400085003908A10038080F20133085000630DB
:100150003802BA000030031C013E3902BB003B08E4
:10016000A1003A080F20B52034286400851DB92865
:10017000080064008519C628C8300120BC0A640044
:100180003C08053C031DC6280130BC0064003C0847
:10019000013C031DCF283230B8000330B9006400A1
:1001A0003C08023C031DD7287730B800B901640031
:1001B0003C08033C031DDF282D30B800B901640062
:1001C0003C08043C031DE7281D30B800B9010800B5
:0401D0006300E828B8
:02400E008C3FE5
:00000001FF