substituindo arduino por mcupetee.cpdee.ufmg.br/ref/doc/relatorios/relatorio...programa de...
Post on 18-Nov-2020
4 Views
Preview:
TRANSCRIPT
Programa de Educação Tutorial da Engenharia ElétricaUniversidade Federal de Minas Gerais
PETEE Relatório
Substituindo Arduino por MCURelatório de Atividade
Arthur Henrique Dias Nunes, Maria Luiza de Andrade Alves
Petiano: Arthur Nunes
Resumo
As placas Arduino são úteis para prototipagem de projetos e são amplamente utilizadas nogrupo. No entanto, quando passada a fase de prototipagem e projeto estiver em sua fase final não érecomendado manter o uso dessas placas. Isso se deve pelo tamanho delas, pela maior possibilidadede mal contato, pelo preço e principalmente pelo fato de gastar uma placa por projeto - é quaseuma inutilização da mesma.
Como engenheiros e bons projetistas, devemos ser capazes de substituir a placa por um circuitoeletrônico menor, mais compacto, mais barato e com menor gasto energético. Substituir o Arduinopor uma placa de circuito impresso com um MCU é o primeiro passo para isso.
Sendo assim, neste relatório descrevemos o circuito mínimo necessário para usar um mi-crocontrolador e partes que podem ser adicionadas, como um circuito de gravação de código oude gravação de bootloader, suficiente até para criar a própria placa com um MCU. Além disso,também descobrimos como se programar um Arduino usando outro, conhecimento que pode serútil caso alguma placa não possa ser conectada com o computador.
I. Introdução
Esse projeto é fruto de uma necessidade de um outro: compreender como usar um MCUno lugar de um Arduino para simplificar, reduzir e economizar o circuito. Nesse caso, oMCU é o Microcontrolador Atmega328p. Ele é o mesmo de um Arduino Uno, com a mesmaquantidade e tipos de pinos. Esse MCU pode ser encontrado na versão PU ou na AU. Na PUo componente é tipo DIP e é encontrado acoplado na placa Uno de modelos mais comuns,como 28 pinos. Já o AU possui 32 pinos e é tipo SMD e, por isso, consideravelmente menor- cabe na ponta do seu dedo. Este último é encontrado em placas Uno de modelos maisnovos.
Neste relatório é usado como referência o Atmega328p, como descrito acima. Dessaforma, as montagens, pinagens, prototipagens e o produto final são específicos dessemicrocontrolador. Para a utilização de outros, como o Atmega2560 (o mesmo de umArduino Mega) podem ser necessárias adaptações.
Para o PETEE este projeto representa a capacidade de substituir todos os Arduinos usadosem outros projetos que estão na fase final. Assim, as placas podem ser usadas nas Oficinas e
http://www.petee.cpdee.ufmg.br/ 1
Programa de Educação Tutorial da Engenharia Elétrica
II TEORIA
para o desenvolvimento de novos projetos sem precisar desmontar os já finalizados, como jáaconteceu. Este projeto representa também um upgrade nos desenvolvimento do PETEE, éum ótimo conteúdo e será uma ótima prática para o grupo finalizar seus trabalhos da formaaqui proposta.
Para o grupo, é viável também substituir os projetos por uma placa Arduino Nano ouMini, que possuem ótimos preços e tamanhos mínimos. Ainda assim, construir sua própriaplaca com um microcontrolador possui duas vantagens: é possível compreender melhor ofuncionamento do software e hardware das placas e o consumo de energia é mínimo.
Curiosidades: DIP ou DIL são acrônimos para dual in-line package, dispositivos eletrônicoscompostos por um retângulo e duas linhas de pinos. Eles são geralmente montados emuma placa de circuito impresso (PCI) por through-hole technology, através de furos comoo nome sugere. Já SMD é um acrônimo para surface-mount device, dispositivos que sãosoldados em PCIs por surface-mount technology (SMT). Estes não necessitam de furos, sãoconsideravelmente menores e necessitam de mais cuidado no processo solda.
II. Teoria
Microcontroladores
Os MCUs (MicroController Units) podem ser resumidos a blocos que contém CPU (CentralProcessing Unit), memória e periféricos. Eles são muito usados em aplicações embarcadas,como é o caso de vários projetos do PETEE. Eles também facilitam o desenvolvimento desistemas com poucos componentes, possuem baixo custo e são de fácil gravação e regravaçãode programas, (Ricardo de Oliveira Duarte, ).
Geralmente, para o seu funcionamento, são necessários apenas um oscilador e uma fontede alimentação externos. No caso do Atmega328p não é diferente. No entanto, o osciladorexterno pode ser substituído por um oscilador interno, o que será explicado mais adiante epode-se adicionar um botão push para fazer reiniciar a programação que estiver gravada.
A pinagem do Atmega328p está na Fig. 1.
Figura 1: Pinagem Atmega328p. À esquerda, na versão AU e à direita na versão PU.
2 Universidade Federal de Minas Gerais
III PRÁTICA
Substituindo Arduino por MCU
Bootloader
Bootloader, carregador de inicialização em tradução livre, é um software intermediárioentre o hardware e a BIOS de um computador ou smartphone que auxilia o carregamentodo sistema operacional. No caso do MCUs, o bootloader é necessário para que ele seja pro-gramável e execute os códigos desenvolvidos pelos projetistas. Alguns microcontroladores,como os que vêm nas placas Arduino, já vêm com o bootloader ao comprá-lo. Em outros,é necessário fazer o processo de gravação, chamado de burn the bootloader. O processo ésimples e rápido. Ele também permite algumas configurações avançadas, como escolher afrequência do oscilador externo que será utilizado ou selecionar o oscilador interno.
É possível realizar o bootloader com uma placa Arduino e com a sua própria IDE. Nocaso da placa UNO devem ser usados os pinos digitais 10, 11, 12 e 13 . O pino 10 será ligadoao RESET do microcontrolador, o 11 ao MOSI, 12 ao MISO e o 13 ao SCK.
A placa deve ser conectada ao computador e na Arduino IDE deve-se selecionar Tools-> Board -> Arduino Duemilanove or Diecimila . Em seguida em Files -> Exemples ->ArduinoISP. Irá aparecer um código na tela e em deve-se realizar o procedimento degravação na placa. Ainda nesta etapa não são necessárias as conexões entre o Atmega ea placa Arduino. Voltando a IDE, agora com as conexões entre o MCU e a placa feitas,deve-se selecionar a aba Tools -> Programmer -> Arduino as ISP. Verifique se a opção foirealmente selecionada e em seguida selecione a aba Tools -> Burn BootLoader. Para saberque o processo foi concluído irá aparecer a mensagem Done burning bootloader.
III. Prática
Funcionamento
Para o circuito de funcionamento do microcontrolador são necessários os seguintescomponentes:
• 1 x Cristal Oscilador de 16MHz;
• 2 x Capacitores de 22pF;
• 1 x Capacitor de 100nF (opcional, mas recomendado);
• 1 x Resistor de 10kΩ;
• 1 x Botão tipo push (opcional);
• 1 x Fonte de alimentação de 5VDC.
Um terminal do oscilador deve estar ligado ao pino XTAL1 e o outro ao XTAL2. Cadaum desses terminais também deve estar ligado a um capacitor de 22pF e os capacitoresligados ao GND.
Em seguida, o pino de reset deve ser ligado ao resistor, que por sua vez deve ser ligadoao VCC. Isso porque o pino de reset é ativado em nível lógico baixo, desta forma evita queele seja acionado. Sendo assim, esse resistor desempenha a função de pull-up. Pode-se
PETEE 3
Programa de Educação Tutorial da Engenharia Elétrica
III PRÁTICA
adicionar um botão para dar o reset quando pressionado. Para isso o botão deve ter umterminal ligado ao pino e outro ligado ao GND.
Finalmente, a fonte de alimentação deve ser adicionada entre o VCC e o GND. Érecomendado que adicionar um capacitor de desacoplamento para eliminar ruídos vindosda fonte, isto é, um filtro passa-baixa. Uma montagem comum é um capacitor de 100nFentre VCC e GND.
O esquemático desta etapa está na Fig. 2. A montagem na protoboard pode ser vista naFig. 7.
A A
B B
C C
D D
1
1
2
2
3
3
4
4
5
5
TITLE:Sheet_1 REV: 1.0
Date: 2020-05-17
Sheet: 1/1Drawn By: ArthurHDN
Company: Your Company
ATMEGA328P-AUU2
(PCINT19/OC2B/INT1)PD31(PCINT20/XCK/T0)PD42GND3VCC4GND5VCC6(PCINT6/XTAL1/TOSC1)PB67(PCINT7/XTAL2/TOSC2)PB78(PCINT21/OC0B/T1)PD59(PCINT22/OC0A/AIN0)PD610(PCINT23/AIN1)PD711(PCINT0/CLKO/ICP1)PB012(PCINT1/OC1A)PB113(PCINT2/SS#/OC1B)PB214(PCINT3/OC2A/MOSI)PB315(PCINT4/MISO)PB416 PB5(SCK/PCINT5) 17AVCC 18ADC6 19AREF 20GND 21ADC7 22PC0(ADC0/PCINT8) 23PC1(ADC1/PCINT9) 24PC2(ADC2/PCINT10) 25PC3(ADC3/PCINT11) 26PC4(ADC4/SDA/PCINT12) 27PC5(ADC5/SCL/PCINT13) 28PC6(RESET#/PCINT14) 29PD0(RXD/PCINT16) 30PD1(TXD/PCINT17) 31PD2(INT0/PCINT18) 32
16MHzX2
22pC5
22pC6
GND
GND
GND
VCC
10kR2
K2-3.6×6.1_SMDKEY2
12
GND
VCC
VCC GND100nC7
5VB1
1 2VCC GND
Figura 2: Esquemático do circuito de funcionamento.
Bootloader
A montagem desta etapa está na Fig. 3. Ela deve ser acrescida da montagem anteriorpara funcionar. Nesse caso, a fonte externa não será necessária se o bootloader alimentar osistema. (WR Kits, b).
A A
B B
C C
D D
1
1
2
2
3
3
4
4
5
5
TITLE:Sheet_1 REV: 1.0
Date: 2020-05-17
Sheet: 1/1Drawn By: ArthurHDN
Company: Your Company
ATMEGA328P-AUU3
(PCINT19/OC2B/INT1)PD31(PCINT20/XCK/T0)PD42GND3VCC4GND5VCC6(PCINT6/XTAL1/TOSC1)PB67(PCINT7/XTAL2/TOSC2)PB78(PCINT21/OC0B/T1)PD59(PCINT22/OC0A/AIN0)PD610(PCINT23/AIN1)PD711(PCINT0/CLKO/ICP1)PB012(PCINT1/OC1A)PB113(PCINT2/SS#/OC1B)PB214(PCINT3/OC2A/MOSI)PB315(PCINT4/MISO)PB416 PB5(SCK/PCINT5) 17AVCC 18ADC6 19AREF 20GND 21ADC7 22PC0(ADC0/PCINT8) 23PC1(ADC1/PCINT9) 24PC2(ADC2/PCINT10) 25PC3(ADC3/PCINT11) 26PC4(ADC4/SDA/PCINT12) 27PC5(ADC5/SCL/PCINT13) 28PC6(RESET#/PCINT14) 29PD0(RXD/PCINT16) 30PD1(TXD/PCINT17) 31PD2(INT0/PCINT18) 32
HDR-F-2.54_2x3H2
1 23 45 6
GND
VCC
MISO
MO
SI
SCK
RESET
GND
VCC
Figura 3: Esquemático do circuito de bootloader.
4 Universidade Federal de Minas Gerais
III PRÁTICA
Substituindo Arduino por MCU
Gravação
Nesta etapa, será necessário adicionar:
• 1 x Capacitor 100nF;
• 1 x Módulo conversor USB-Serial FTDI, Fig. 9. Este pode ser substituído por umaplaca Arduino Uno sem o microcontrolador.
A montagem desta etapa está na Fig. 4. Ela deve ser acrescida da montagem anteriorpara funcionar. Nesse caso, a fonte externa não será necessária se o gravador alimentar osistema. (WR Kits, a), (educ8s.tv, ).
A A
B B
C C
D D
1
1
2
2
3
3
4
4
5
5
TITLE:Sheet_1 REV: 1.0
Date: 2020-05-17
Sheet: 1/1Drawn By: ArthurHDN
Company: Your Company
GND
VCC
100nC9
DTR
TXRX
VCCCTS
GNDHDR-F-2.54_1x6
CODE1
123456
ATMEGA328P-AUU5
(PCINT19/OC2B/INT1)PD31(PCINT20/XCK/T0)PD42GND3VCC4GND5VCC6(PCINT6/XTAL1/TOSC1)PB67(PCINT7/XTAL2/TOSC2)PB78(PCINT21/OC0B/T1)PD59(PCINT22/OC0A/AIN0)PD610(PCINT23/AIN1)PD711(PCINT0/CLKO/ICP1)PB012(PCINT1/OC1A)PB113(PCINT2/SS#/OC1B)PB214(PCINT3/OC2A/MOSI)PB315(PCINT4/MISO)PB416 PB5(SCK/PCINT5) 17AVCC 18ADC6 19AREF 20GND 21ADC7 22PC0(ADC0/PCINT8) 23PC1(ADC1/PCINT9) 24PC2(ADC2/PCINT10) 25PC3(ADC3/PCINT11) 26PC4(ADC4/SDA/PCINT12) 27PC5(ADC5/SCL/PCINT13) 28PC6(RESET#/PCINT14) 29PD0(RXD/PCINT16) 30PD1(TXD/PCINT17) 31PD2(INT0/PCINT18) 32
DTR
TXRX
RESET
RESET
Figura 4: Esquemático do circuito de gravação.
DIY Placa Arduino
Com as descrições feitas até aqui, é possível criar a sua própria DIY placa "Arduino".Um esquemático desta etapa está na Fig. 5. Depois disso, foram adicionados conectorespara que seja possível usar quaisquer pinos desejados.
PETEE 5
Programa de Educação Tutorial da Engenharia Elétrica
III PRÁTICA
A A
B B
C C
D D
1
1
2
2
3
3
4
4
5
5
TITLE:Sheet_1 REV: 1.0
Date: 2020-05-17
Sheet: 1/1Drawn By: ArthurHDN
Company: Your Company
GND
VCC
100nC9
DTR
TXRX
VCCCTS
GNDHDR-F-2.54_1x6
CODE1
123456
ATMEGA328P-AUU5
(PCINT19/OC2B/INT1)PD31(PCINT20/XCK/T0)PD42GND3VCC4GND5VCC6(PCINT6/XTAL1/TOSC1)PB67(PCINT7/XTAL2/TOSC2)PB78(PCINT21/OC0B/T1)PD59(PCINT22/OC0A/AIN0)PD610(PCINT23/AIN1)PD711(PCINT0/CLKO/ICP1)PB012(PCINT1/OC1A)PB113(PCINT2/SS#/OC1B)PB214(PCINT3/OC2A/MOSI)PB315(PCINT4/MISO)PB416 PB5(SCK/PCINT5) 17AVCC 18ADC6 19AREF 20GND 21ADC7 22PC0(ADC0/PCINT8) 23PC1(ADC1/PCINT9) 24PC2(ADC2/PCINT10) 25PC3(ADC3/PCINT11) 26PC4(ADC4/SDA/PCINT12) 27PC5(ADC5/SCL/PCINT13) 28PC6(RESET#/PCINT14) 29PD0(RXD/PCINT16) 30PD1(TXD/PCINT17) 31PD2(INT0/PCINT18) 32
100nC10
GNDVCC
RESET
SCKMOSIMISO
VCC
GND
HDR-F-2.54_2x3H3
1 23 45 6
GND GND
22pC11
22pC12
16MHzX3
VCCGND
K2-3.6×6.1_SMDKEY3
12
10kR3
DTR
TXRX
GNDVCC
GND
VCC
RESET
MOSIMISO
SCKRESET
D3D4
D5D6
D8D7
D10D9
A6
A0A1A2A3
A7
A4A5
D2
100nC5
GND
AREF
AREF
HDR-M-2.54_1x10J312345678910
HDR-M-2.54_1x10J4
12345678910
HDR-M-2.54_1x3J5
3
12
HDR-M-2.54_1x3
J63 12A
6
D3D4
D5
D6
D7
D8
D9
D10
MO
SIM
ISO
SCK
VCC GNDD2
A0A1A2
A4A3
A5RESET
TXRX
A7
Figura 5: Esquemático do circuito da PCI.
Figura 6: Visualização do modelo em 3D.
6 Universidade Federal de Minas Gerais
IV EXPERIMENTOS E RESULTADOS
Substituindo Arduino por MCU
IV. Experimentos e Resultados
Experimento 1
O primeiro experimento consistiu em um circuito mínimo para a utilização do MCUAtmega328p. Ele foi montado em uma protoboard, e por isso foi usada a versão PU do MCU.Nele foi montada a instrução Hello World do Arduino: piscar um LED. A montagem foipequena e com o seu sucesso já é possível concluir que pode-se substituir alguns Arduinosde projetos que estão em fases finais do PETEE por apenas o MCU e alguns componentessimples descritos na Seção III. A montagem deste protótipo pode ser vista na Fig. 7.A programação do MCU nesse caso foi feita diretamente pela placa Uno, encaixando oAtmega328p-PU na placa.
Figura 7: Atmega328p-PU na protoboard.
Vale a pena reproduzi-lo em uma PCI, quando possível, nos projetos do grupo: será maisbarato, não ocuparemos uma placa Arduino desnecessariamente e o consumo de energia eo tamanho do circuito ficarão menores.
Experimento 2
Este também consistiu na programação de um MCU que estava montado em uma placa,como no anterior. No entanto, a novidade neste experimento é que a programação docontrolador não foi feita diretamente pela placa Uno. Neste caso, a placa foi usada comoum conversor FTDI, (Instructables, a).
Isso possibilitou que o MCU permanecesse na protoboard, ou em um circuito impressoque pode ser o caso das aplicações nos projetos do PETEE. As ligações foram simples:
• 5V da placa no VCC da protoboard;
• GND da placa no GND da protoboard;
• RESET da placa no RESET do MCU;
• TX da placa no TX do MCU;
• RX da plaxa no RX do MCU.
O resultado está ilustrado na Fig. 8.
PETEE 7
Programa de Educação Tutorial da Engenharia Elétrica
IV EXPERIMENTOS E RESULTADOS
Figura 8: Usando uma placa Uno como um conversor FTDI.
Esse método precede o método mais geral de programação de um microcontrolador emuma placa: usar um conversor FTDI, (educ8s.tv, ). Esse conversor é um módulo USB-Serialpróprio para essa aplicação. Esse módulo está representado na Fig. 9.
Figura 9: Módulo FTDI.
Experimento 3
Para o terceiro experimento foi usado uma placa Arduino Nano. A novidade dele éa programação da placa: ela não foi feita diretamente usando um cabo de dados porquenão havia disponibilidade de um cabo com entrada micro USB no momento. Para isso, foiusada uma placa Uno para realizar a interface. Existem algumas formas de realizar esseprocedimento:
8 Universidade Federal de Minas Gerais
IV EXPERIMENTOS E RESULTADOS
Substituindo Arduino por MCU
• Usando a placa Uno como um ICSP, (Arduino Addiction, );
• Usando a placa Uno como um FDTI, o mesmo usado no Experimento 2, (Instructables,a);
• Usando a placa Uno como um ICSP mas sem fazer modificações nas configurações daIDE. Essa foi a maneira utilizada na Fig 10, (Instructables, b).
Figura 10: Programação de um Arduino Nano
Experimento 4
Finalmente, o último experimento foi feito utilizando um módulo FTDI para a progra-mação de um MCU, Fig. 11, (educ8s.tv, ).
Figura 11: Programação de um MCU usando FTDI
PETEE 9
Programa de Educação Tutorial da Engenharia Elétrica
REFERÊNCIAS
V. Discussão
O conhecimento descrito neste relatório é aplicável nos projetos do PETEE. Futurosprojetos podem ser iniciados, dando continuidade a esse trabalho, como: (i) aplicaçãodesse conhecimento em protótipos do PETEE; (ii) estudo de outros microcontroladores; (iii)estudo de outras maneiras de se substituir placas Arduino em projetos finais; (iv) circuitosadicionais que podem ser inseridos em conjunto com os descritos aqui, como proteção dealimentação, conversor USB-Serial, dentre outros.
Recomendamos a substituição nos projetos do PETEE e o uso deste conhecimento nacriação de novos. Assim, os protótipos finais ficarão mais baratos, mais robustos, com menorgasto energético e mais sofisticados.
Referências
Arduino Addiction. Program Arduino Nano via Uno with ICSP. arduinoaddiction.blogs-pot.com/2016/02/program-arduino-nano-via-uno-with-icsp.html. Acessado em 01 Junho2020. 9
educ8s.tv. Arduino Uno (ATMEGA328P) on a breadboard Tutorial DIY project.youtu.be/npc3uzEVvc0. Acessado em 07 Maio 2020. 5, 8, 9
Instructables. Arduino Examples 2 Use an Arduino As a FTDI Programmer. instructa-bles.com/id/Arduino-Examples-2-Use-an-Arduino-as-a-FTDI-Progr/. Acessado em 01Junho 2020. 7, 9
Instructables. Programming Arduino Nano Using UNO. instructables.com/id/Programming-Arduino-Nano-Using-UNO/. Acessado em 01 Junho 2020. 9
Ricardo de Oliveira Duarte. Arquitetura e Organização de Computadores. 2
WR Kits. Faça uma PCI Arduino Standalone. youtu.be/RvBLmwF8JIE. Acessado em 05 Maio2020. 5
WR Kits. Gravando o Bootloader no Atmega328p. youtu.be/5u8OGlTwsAI. Acessado em 05Maio 2020. 4
10 Universidade Federal de Minas Gerais
top related