Upload
doankhanh
View
220
Download
0
Embed Size (px)
Citation preview
CENTRO PAULA SOUZA FACULDADE DE TECNOLOGIA
FATEC SANTO ANDRÉ
Tecnologia em Eletrônica Automotiva
FERNANDA WIGNER
Controle de ECM utilizando PIC24 e Free RTOS
Santo André – São Paulo 2016
CENTRO PAULA SOUZA FACULDADE DE TECNOLOGIA
DE SANTO ANDRÉ
Tecnologia em Eletrônica Automotiva
FERNANDA WIGNER
Controle de ECM utilizando PIC24 e Free RTOS
Monografia apresentada ao Curso de Tecnologia em Eletrônica Automotiva da FATEC Santo André, como requisito parcial para conclusão do curso em Tecnologia em Eletrônica Automotiva. Orientador: Prof. Msc. Murilo Zanini de Carvalho.
Santo André – São Paulo 2016
Wigner, Fernanda Controle de ECM utilizando PIC 24 e FreeRTOS / Fernanda Wigner – Santo André, 2016. nº folhas: 102 il.54
Trabalho de conclusão de curso – Fatec Santo André, Curso de Eletrônica Automotiva, 2016.
Orientador: Murilo Zanini de Carvalho.
1. Free RTOS. 2. Injeção eletrônica. 3. RTOS.
AGRADECIMENTOS
Gostaria de agradecer à todos os professores, colegas e funcionários da instituição FATEC Santo André pela ajuda, apoio e confiança, em especial ao meu mestre orientador Murilo Zanini de Carvalho e à comunidade open source interessada no assunto.
RESUMO Este trabalho de conclusão de curso propõe a construção de um protótipo que simula o funcionamento básico de uma ECM (Engine Control Module - Módulo de Controle do Motor), agregando à um microcontrolador PIC 24, alguns elementos básicos para o funcionamento de uma injeção eletrônica, como por exemplo, um sensor de TPS (Throttle Position Sensor – Sensor de Posição da Borboleta), sensor que mede a demanda de aceleração pelo motorista e um sinal de saída que aciona o bico injetor de combustível, além de outros elementos complementares, já o software de gerenciamento embarcado no protótipo é escrito com conceitos de RTOS (Real Time Operating System – Sistema Operacional de Tempo Real), utilizando o FreeRTOS. O protótipo proposto possui um caráter experimental, pois ao final do trabalho foi realizada uma análise do desempenho deste conjunto perante outro protótipo, também básico que já fora utilizado ao longo deste curso de tecnologia para outros projetos. O hardware já utilizado no curso possui um PIC18 e software do tipo firmware on bare metal. Esta análise verificou o comportamento dos pulsos de injeção gerados entre o primeiro e segundo hardware via osciloscópio, verificou também o tempo de execução de cada um dos algoritmos nos respectivos sistemas embarcados e apresentou seus resultados em forma de tabelas comparativas. Palavras chaves: FreeRTOS. Injeção Eletrônica. RTOS.
ABSTRACT
This work proposes the constructing a prototype simulating a ECU basic operation, adding to a PIC microcontroller 24, some basic elements for the operation of an electronic injection, as a TPS sensor (sensor which measures the demand for acceleration by the driver) and output signal to the nozzle fuel, and other complementary elements, also the management software embedded in the prototype and written with concepts of RTOS, Real Time Operating System using the FreeRTOS. It has an experimental character, because at the end there will be a performance analysis of this set towards other hardware prototype, also basic, and already used by this technology course for others projects that use PIC 18 and a bare metal firmware. This analysis will verify the behavior of the injection pulses between the first and second set by oscilloscope. Keywords: FreeRTOS. electronic injection, RTOS.
LISTA DE ILUSTRAÇÕES
Figura 1 - Pesquisa sobre o mercado de trabalho brasileiro de
desenvolvimento de sistemas embarcados 2015, quanto ao microcontrolador
utilizado. Fonte: adaptado de www.embarcados.com.br, 2015. .......................... 22
Figura 2 - Pesquisa sobre o mercado de trabalho brasileiro de
desenvolvimento de sistemas embarcados 2015, quanto ao sistema
operacional utilizado. Fonte: adaptado de www.embarcados.com.br, 2015. ..... 23
Figura 3 - Diagrama de blocos do envio dos sinais de TPS, PIP e Temperatura
para o Kit PIC 18 e Kit PIC 24 e medição dos sinais de injeção. Fonte:
elaborado pela autora. ............................................................................................ 25
Figura 4 - Sistema mecânico de injeção de combustível K-Jetronic da Bosh,
1973. Fonte: extraído do livro Motores de Combustão Interna Vol.1, Brunetti,
2012. ......................................................................................................................... 27
Figura 5 - Distribuidor de combustível, regulador de pressão primário e o
sensor de massa de ar do sistema K-Jetronic system. Fonte: adaptado da
instrução técnica do sistema K-Jetronic da Bosh, 1974...................................... 28
Figura 6 - Esquema funcional de um sistema analógico de injeção eletrônica.
Fonte: extraído do manual técnico da injeção Le-Jetronic da Bosh, 1995. ....... 30
Figura 7 - Sensor de palheta de fluxo e de temperatura do ar. Fonte: extraído
do livro Motores de Combustão Interna Vol.1, Brunetti, 2012. ............................ 31
Figura 8 – Interior da ECM analógica do sistema Le-Jetronic da Bosh. Fonte:
adaptado da internet, http://produto.mercadolivre.com.br/MLB-710858107-
modulo-de-injeco-bosch-kadet-gsi-le-jetronic-reparaco-_JM, acesso em
01/12/2016. ............................................................................................................... 32
Figura 9 - Esquema funcional de um sistema digital de injeção eletrônica.
Fonte: Manual Técnico da Injeção LH-Jetronic da Bosh ..................................... 33
Figura 10 - Funcionamento do sensor MAF. Fonte: adaptado de MTE Thomson,
1995. ......................................................................................................................... 34
Figura 11 - Esquema funcional do microcontrolador Siemens 80535. Fonte:
adaptado do datasheet, 1995. ............................................................................... 35
Figura 12 – ECM digital da Bosh que equipa os motores do veículo S40 da
Volvo. Fonte: adaptado da internet,
http://forums.swedespeed.com/showthread.php?215698-ECU-Hacking!, acesso
em 01/12/2016 .......................................................................................................... 36
Figura 13 – O TPS detecta posição da borboleta fechada – 0V. Fonte: adaptado
de MTE Thomson, 2014........................................................................................... 37
Figura 14 - O TPS detecta posição da borboleta aberta – 5V. Fonte: adaptado
de MTE Thomson, 2014........................................................................................... 37
Figura 15 – Camadas de software localização do firmware. Fonte: adaptado de
http://slideplayer.com.br/slide/2264943/ ................................................................ 40
Figura 16 - Camadas de software do Kit PIC 24. Fonte: elaborado pela autora. 40
Figura 17 – Restrição temporal mais tolerante. Fonte: elaborado pela autora. . 41
Figura 18 – Restrição temporal mais rígida. Fonte: elaborado pela autora. ...... 41
Figura 19 - Dinâmica de funcionamento das tarefas em um sistema
multitasking. Fonte: adaptado de
www.freertos.org/implementation/a00004.html .................................................... 42
Figura 20 - Técnica de programação chamada de super-loop. Fonte: Sergio
Prado, treinamento de FreeRTOS, 2015. .............................................................. 43
Figura 21 - Desvantagem do Super-Loop. Fonte: Sergio Prado, treinamento de
FreeRTOS, 2015. ...................................................................................................... 44
Figura 22 - Camadas de software do Kit PIC 24. Fonte: elaborado pela autora. 45
Figura 23 – Diferença entre Soft e Hard Real Time. Fonte: elaborado pela
autora. ...................................................................................................................... 46
Figura 24 - Típico gerenciamento da stack (pilha) pelo TCB. Fonte: adaptado do
livro Real-Time Systems Design and Analysis, 2012. .......................................... 47
Figura 25 - Transições de estados válidos das tasks no FreeRTOS. Fonte:
http://www.freertos.org/RTOS-task-states.html, acesso em 01/10/2016. ........... 48
Figura 26 – Escalonamento pre-emptive sem time slice. Fonte: Fonte: adaptado
de http://www.embeddedlinux.org.cn/rtconforembsys/5107final/LiB0024.html,
acesso em 01/12/2016. ............................................................................................ 50
Figura 27 - Escalonamento pre-emptive. Fonte: adaptado de
http://www.embeddedlinux.org.cn/rtconforembsys/5107final/LiB0024.html,
acesso em 01/12/2016. ............................................................................................ 50
Figura 28 - Escalonamento cooperativo. Fonte: elaborado pela autora............. 51
Figura 29 – Arquitetura em camadas de um sistema embarcado em tempo real.
Fonte: extraído do livro Real Time Software Design For Embedded Systems,
Gomaa 2016. ............................................................................................................ 52
Figura 30 - Sistema de tempo real embarcado. Fonte: livro Real Time Software
Design For Embedded Systems, 2016. .................................................................. 53
Figura 31 – Adaptação do PIC 24 em placa adaptadora. Fonte: elaborado pela
autora. ...................................................................................................................... 61
Figura 32 - Hardware Kit PIC 24 finalizado em primeiro teste de funcionamento
com aplicação demonstrativa para PIC 24 em FreeRTOS. Fonte: elaborado pela
autora. ...................................................................................................................... 67
Figura 33 - Fonte de 5V utilizando LM7805 para alimentação dos circuitos
geradores de sinais. Fonte: adaptado do datasheet do CI LM7805 da Texas. ... 68
Figura 34 - Circuito gerador do sinal do TPS. Fonte: elaborado pela autora. .... 69
Figura 35 - Circuito gerador do sinal de temperatura. Fonte: adaptado do
datasheet do LM35 da Texas, 2016. ....................................................................... 70
Figura 36 - Circuito gerador do sinal de PIP. Fonte: adaptado do datasheet do
CI 555 da Texas, 2015 . ........................................................................................... 71
Figura 37 – Gerador de sinais completo. TPS, Temperatura e PIP. Fonte:
elaborado pela autora. ............................................................................................ 72
Figura 38 – Fonte de 6V utilizando o LM317 para alimentação do circuito
condicionador dos sinais analógicos. Fonte: extraído do datasheet do CI
LM317 da Texas, 2015. ............................................................................................ 73
Figura 39 - Circuito condicionador do sinal do TPS. Fonte: adaptado do circuito
da ECU do Gol, Prof. Edson, 2014. ........................................................................ 74
Figura 40 - Circuito condicionador do sinal de temperatura. Fonte: adaptado do
circuito da ECU do Gol, Prof. Edson, 2014. .......................................................... 75
Figura 41 – Circuito condicionador do sinal do PIP. Fonte: adaptado do circuito
da ECU para o Gol, Prof. Edson, 2014. .................................................................. 76
Figura 42 – ............................................................................................................... 77
Figura 43 – Hardware finalizado ainda sem softwares finais. Fonte: elaborado
pela autora. .............................................................................................................. 78
Figura 44 – Estrutura de arquivos do FreeRTOS do projeto demo para
PIC24FJ128GA110, carregados. Fonte: adaptado de MPLAB X IDE v.3.20. ....... 80
Figura 45 – Arquivos do kernel que não necessitam de modificação. Fonte:
extraído do ambiente de desenvolvimento do MPLAB X IDE v.3.20. .................. 81
Figura 52 - Arquivos criados especificamente para a aplicação. Fonte: extraído
do ambiente de desenvolvimento do MPLAB X IDE v.3.20.Erro! Indicador não
definido.
Figura 51 - ....................................................................... Erro! Indicador não definido.
Figura 46 – Queue criada e sem elementos. Fonte: Using The FreeRTOS Real
Time Kernel: A Pratical Guide PIC32, 2010. ................. Erro! Indicador não definido.
Figura 47 – Envio de elemento para queue. Fonte: Using The FreeRTOS Real
Time Kernel: A Pratical Guide PIC32, 2010. ................. Erro! Indicador não definido.
Figura 48 - Envio de elemento para queue. Fonte: Using The FreeRTOS Real
Time Kernel: A Pratical Guide PIC32, 2010. ................. Erro! Indicador não definido.
Figura 49 – Recebimento de elemento via queue. Fonte: Using The FreeRTOS
Real Time Kernel: A Pratical Guide PIC32, 2010. ......... Erro! Indicador não definido.
Figura 50 – Reposicionamento de elemento na queue. Fonte: Using The
FreeRTOS Real Time Kernel: A Pratical Guide PIC32, 2010.Erro! Indicador não
definido.
Figura 53 – adaptado de http://www.freertos.org/a00110.htmlErro! Indicador não
definido.
LISTA DE TABELAS
Tabela 1 – Comparação entre PICs - recursos básicos e tensão de alimentação
.................................................................................................................................. 56
Tabela 2 - Definição das funções dos pinos ......................................................... 58
LISTA DE ABREVIATURAS
A/C Ar/Combustível;
A/D Analógico/Digital;
API Application Programming Interface - Interface de Programação
de Aplicação;
ARM Advanced Risc Machine – Tipo de arquitetura de processador
de 32 bits;
CAN Controller Area Network – Tipo de protocolo de comunicação
serial;
ºC Graus Celsius;
CI Circuito Integrado;
CO Monóxido de carbono;
CO2 Dióxido de Carbono;
CONAMA Conselho Nacional do Meio Ambiente;
CPU Central Processing Unit – Unidade Central de Processamento;
ECM Engine Control Module (Módulo de Controle do Motor);
EFI Electronic Fuel Injection – Injeção Eletrônica de Combustível;
Firmware On Bare Metal Expressão que significa ser programado direto no metal, sem
sistema operacional de base;
FreeRTOS Sistema Operacional de tempo Real de código aberto utilizado
no projeto;
GND Ground – Terra. Potencial de zero Volt em circuitos elétricos e
eletrônicos;
HC Hidrocarboneto(s);
Hz Hertz;
kB Quilobytes;
kHz Quilohertz;
LCD Liquid Crystal Display – Display de Cristal Liquido;
LED Light Emitting Diode – Diodo Emissor de Luz;
MAF Mass Air Flow – Fluxo de Massa de Ar;
MCI Motor de Combustão Interna;
PIC 24/18 Interface de Controle Programável;
PIP Profile Ignition Pickup – Perfil de Captação de Ignição
PLL Phase-Locked Loop;
MHz Megahertz;
Ms Milisegundo(s);
mV Milivolt(s);
NOx Óxido(s) Nitroso(s);
O2 Oxigênio;
RPM Rotações Por Minuto;
RTOS Real Time Operating System – Sistema Operacional de Tempo
Real;
RusEFI Projeto open source de injeção eletrônica de combustível;
TPS Throttle Position Sensor - Sensor de Posição da Borboleta;
TQFP Thin Quad Flat Package - Encapsulamento Quadrado Plano;
µC Microcontrolador;
µs Microsegundo(s);
USART Universal Synchronous Asynchronous Receiver Transmitter –
Tipo de protocolo de comunicação serial;
USB Universal Serial Bus;
V Volts;
Sumário
1 INTRODUÇÃO ....................................................................................................... 20
1.1 Motivação ......................................................................................................... 21
1.2 Objetivos .......................................................................................................... 24
1.3 Organização do Trabalho ................................................................................. 25
2 BREVE HISTÓRICO DOS SISTEMAS DE INJEÇÃO DE COMBUSTÍVEL EM UM
MCI ............................................................................................................................ 26
2.1 Sistema mecânico de injeção de combustível ................................................. 26
2.2 Classificações dos sistemas de injeção eletrônica........................................... 29
2.2.1 Sistema de injeção de combustível eletrônico analógico ........................... 29
2.2.2 Sistema de injeção de combustível eletrônico digital ................................. 33
3 SISTEMA OPERACIONAL, FIRMWARE, SISTEMA DE TEMPO REAL E
SISTEMA OPERACIONAL DE TEMPO REAL ......................................................... 38
3.1 Sistema Operacional (SO) ............................................................................... 38
3.2 Firmware on bare metal ................................................................................... 39
3.3 Sistema de Tempo Real ................................................................................... 41
3.4 Sistema Operacional de Tempo Real (RTOS) ................................................. 44
3.4.2 O escalonador de tarefas de um RTOS ..................................................... 49
3.4.3 RTOS para embarcados ............................................................................ 52
4 METODOLOGIA .................................................................................................... 55
4.1 Projeto do hardware Kit PIC 24 ........................................................................ 55
4.1.1 Análise e escolha do µC ............................................................................ 55
4.1.3 Definição das funções dos pinos ............................................................... 57
4.1.4 Acomodação do PIC utilizando placa adaptadora ..................................... 60
4.1.5 Requisitos mínimos para funcionamento do µC ........................................ 61
4.1.5.1 Fonte de Alimentação de 3.3.V ............................................................... 61
4.1.5.2 Capacitores de desacoplamento, tensão do núcleo do µC e MCRL ....... 62
4.1.5.3 Oscilador externo .................................................................................... 63
4.1.5.4 LCD 16x2 ................................................................................................ 65
4.1.5.5 LEDS e botão.......................................................................................... 65
4.1.5.6 Resultado da montagem do Kit PIC 24 e teste inicial ............................. 66
4.1.6 Projeto do gerador de sinais para o Kit PIC 24 e Kit PIC 18 ...................... 67
4.1.6.1 Fonte de 5V ............................................................................................ 68
4.1.6.2 TPS ......................................................................................................... 68
4.1.6.3 Temperatura ........................................................................................... 69
4.1.6.4 PIP .......................................................................................................... 70
4.1.6.5 Resultado da montagem do gerador de sinais ....................................... 71
4.1.7 Projeto do condicionador de sinais para o Kit PIC 24 e Kit PIC 18 ............ 72
4.1.7.1 Fonte de 6V ............................................................................................ 72
4.1.7.2 Condicionador do circuito do TPS ........................................................... 73
4.1.7.3 Condicionador do circuito da temperatura .............................................. 74
4.1.7.4 Condicionador do circuito do PIP ............................................................ 75
4.1.8 Resultado da montagem do condicionador de sinais................................. 77
4.1.9 Resultado do hardware completo .............................................................. 77
4.2 Modelagem do software de injeção eletrônica em FreeRTOS para o Kit PIC 24
............................................................................................................................... 79
4.2.1 Estrutura básica do FreeRTOS .................................................................. 80
4.2.2 Grupo de arquivos que formam o kernel .................................................... 81
4.2.3 Configurando heap de memória ................................................................ 82
4.2.4 Grupo de arquivos que formam a aplicação de EFI ................................... 83
4.2.5 A criação de tasks ...................................................................................... 84
4.2.6 Utilizando as queues .................................................................................. 85
4.2.7 Semáforos ................................................................................................. 87
4.2.8 Customização do FreeRTOS ..................................................................... 88
4.2.9 Configuração dos periféricos ..................................................................... 90
5 GRAVAÇÃO FINAL DOS SOFTWARES E ANÁLISE DE RESULTADOS ........... 91
6 CONCLUSÃO ...................................................................................................... 100
7 PROPOSTAS FUTURAS ..................................................................................... 101
8 REFERÊNCIAS .................................................................................................... 102
APÊNDICE A – Fluxograma da Função Principal elaborada em FreeRTOS .... 104
APÊNDICE B – Fluxograma da task Define RPM elaborada em FreeRTOS ... 105
APÊNDICE C – Fluxograma da task DefineTinj elaborada em FreeRTOS ...... 107
APÊNDICE D – Fluxograma da task ADTPS elaborada em FreeRTOS .......... 110
APÊNDICE E – Fluxograma do Timer 2 elaborada em FreeRTOS .................. 112
APÊNDICE F – Fluxograma da task vLCDTask do FreeRTOS ........................ 113
ANEXO A – Esquema elétrico do Kit PIC 18 .................................................... 114
20
1 INTRODUÇÃO
O automóvel e outros meios de locomoção que utilizam um MCI sempre
acompanharam o desenvolvimento da humanidade e suas tecnologias. Com o
surgimento da necessidade de economia de combustíveis derivados de petróleo e
atualmente com exigências ambientais cada vez mais restritivas, o controle
eletrônico da injeção de combustível em um MCI é uma solução bem eficaz
encontrada pela indústria automobilística, se não for a única. Para atender a essas
necessidades foi necessário o aprimoramento dos modelos de injeção puramente
mecânicos, utilizados desde 1925 (BRUNETTI, 2012), passando pelos modelos
analógicos para hoje se chegar aos os modelos de gerenciamento digital, que são
largamente utilizados.
Graças ao desenvolvimento da indústria eletrônica e o seu barateamento as
indústrias automotivas começaram a realizar pesquisas e projetos agregando maior
quantidade de componentes eletrônicos, (BRUNETTI, 2012) já que, alguns
componentes mecânicos começaram a apresentar limitações construtivas e de
funcionamento no desenvolvimento de projetos mais modernos.
O sistema de injeção eletrônica digital possui grandes vantagens sobre um
sistema de injeção eletrônica analógica, ambos possuem uma ECM, porém as
diferenças vão desde a forma de transdução dos sensores do motor, tratamento das
informações dentro da ECM e velocidade de transmissão dos dados entre sensores,
módulo e atuadores, como os bicos injetores ou velas de ignição no caso de motores
a álcool ou a gasolina (ciclo Otto).
A relação estequiométrica ideal, ou seja, a reação de queima completa de
uma molécula de combustível, gasolina (C8H18), etanol (C2H6O) ou diesel (C14H30)
com o O2, deve resultar apenas em CO2 e água. Ademais quaisquer outros
componentes resultantes são tóxicos e poluentes. Hoje se sabe que quanto mais
uma molécula de combustível se aproxima da atomização as chances de ser
totalmente consumida pela reação aumentam.
Entende-se que um sistema como esse deve funcionar da forma confiável,
com certo grau de precisão e robustez, pois poderá ser solicitado por várias horas e
um sistema de injeção eletrônica atual faz uso de softwares estratégicos para atingir
isso.
21
Um RTOS possui algoritmos já programados os quais trabalham para que um
sistema que funcione com restrições temporais possa atuar de forma eficiente
mesmo que esse sistema trabalhe dinamicamente, como por exemplo, a
instrumentação de um avião que informa ao piloto dados de altitude a todo instante,
esses dados podem variar, pois reagem ao meio físico, ou mesmo uma ECM que
atende a diversas solicitações de aceleração ou desaceleração de um motorista e
cujo software de gerenciamento deve ler, medir e informar os dados em tempo hábil
para cálculo e atuação com as devidas regularidades. Portanto um RTOS não
precisa ser necessariamente um sistema controlador rápido, mas sim interagir com o
meio envolvente a tempo.
Existem muitas técnicas bem estabelecidas para escrever um software bem
incorporado sem o uso de um kernel (núcleo), e se o sistema que está sendo
desenvolvido é simples, técnicas comuns podem proporcionar uma solução mais
adequada. Em casos mais complexos, é provável que o uso de um kernel seja
preferível, mas onde o ponto de cruzamento entre o uso de um kernel ou um
firmware sempre será subjetivo. (www.freertos.org, 2016).
1.1 Motivação
Três motivos principais serviram como fonte de inspiração para esse trabalho.
Em primeiro lugar, seguir a tendência de mercado no desenvolvimento de softwares
para dispositivos embarcados. Já é comum o uso de RTOS para controle de
diversos dispositivos embarcados que possuem tarefas com restrições temporais
explícitas, como por exemplo, uma ECM. Um bom exemplo disso é a RusEFI, que
consiste de uma ECM construída com um microcontrolador ARM e com sistema de
gerenciamento escrito com o auxílio de um RTOS, o ChibiOS. Esse projeto é open
source, o significa que se pode copiá-lo, modificá-lo e distribuí-lo sem a necessidade
de se pagar royalties (direitos autorais) podendo ser usado em aplicações
comerciais.
Em segundo lugar, a familiaridade que adquiri ao longo do curso com os
microcontroladores PIC, o conhecimento de sua programação e sua arquitetura
22
possibilitou a escolha do PIC 24FJ256GB106 com o FreeRTOS, já que ambos são
compatíveis.
Em terceiro e último lugar a abrangência social que esse projeto pode
alcançar na atualidade, pois, segundo uma pesquisa do site
www.embarcados.com.br realizada entre os meses de setembro e outubro de 2015,
entrevistando 835 profissionais com conhecimentos amplos na área mostra que,
63% dos entrevistados já possuíam experiência com chips da fabricante Microchip,
conforme ilustra a figura 1 elaborada pela pesquisa.
Figura 1 - Pesquisa sobre o mercado de trabalho brasileiro de desenvolvimento de sistemas
embarcados 2015, quanto ao microcontrolador utilizado. Fonte: adaptado de
www.embarcados.com.br, 2015.
23
A pesquisa também revelou que 31% dos entrevistados possuíam experiência
com o FreeRTOS, como mostra a figura 2, também elaborada pela pesquisa.
Figura 2 - Pesquisa sobre o mercado de trabalho brasileiro de desenvolvimento de sistemas
embarcados 2015, quanto ao sistema operacional utilizado. Fonte: adaptado de
www.embarcados.com.br, 2015.
Além disso, 30% dos entrevistados trabalham ou já trabalharam com
embarcados para o setor industrial, 21% no setor automotivo e com 20%, na
automação residencial.
24
1.2 Objetivos
O objetivo deste trabalho é desenvolver um hardware que simule uma ECM
para veículos de ciclo Otto. Essa ECM, do tipo protótipo, utilizará o PIC 24 como o
núcleo de processamento e terá como sinais de entrada um potenciômetro que
simula o TPS, um sensor de temperatura do ambiente e um gerador de onda
quadrada para simular o efeito Hall de um distribuidor de ignição, o PIP ou mais
modernamente, o sinal da roda fônica. Além disso, o hardware também possuirá um
LCD para visualização de algumas informações referente ao processo, LEDS
indicativos e um botão comum, esses últimos elementos servem para incrementar o
software já que outro hardware, que utiliza o PIC 18 e servirá para comparação ao
final do projeto, também os possui. O software de gerenciamento desse sistema
será escrito em FreeRTOS e o do PIC 18 será um firmware on bare metal.
Com os dois hardwares funcionando, Kit PIC 24 e Kit PIC 18, ambos
receberão simultaneamente os sinais de entrada: PIP, sensor de temperatura e TPS,
gerando os pulsos de injeção com seus respectivos softwares em saídas específicas
de cada Kit. Esses pulsos de injeção serão captados em entradas distintas de um
mesmo osciloscópio e serão analisados.
A figura 3 é um diagrama de blocos que ilustra como será a distribuição dos
sinais paras os Kits e a captura dos sinais de injeção pelo osciloscópio.
25
Figura 3 - Diagrama de blocos do envio dos sinais de TPS, PIP e Temperatura para o Kit PIC 18
e Kit PIC 24 e medição dos sinais de injeção. Fonte: elaborado pela autora.
1.3 Organização do Trabalho
O capitulo 2 discorrerá sobre um breve histórico acerca do funcionamento das
injeções mecânica, eletrônica analógica e digital em um MCI de ciclo Otto, mas o
assunto de carburadores não será abordado.
O capítulo 3 discorrerá sobre os conceitos de sistema operacional, firmware e
RTOS.
O capítulo 4 abordará o processo de construção da ECM, Kit PIC 24, alguns
testes iniciais de funcionamento além da construção do gerador e do condicionador
de sinais que alimentam as ECMs, Kit PIC 24 e Kit PIC 18, além de aprofundar o
assunto de RTOS na criação do software de injeção utilizando a API do FreeRTOS.
No capítulo 5 será realizada a programação dos softwares e a análise dos
resultados.
No capítulo 6 a conclusão, e finalmente no capítulo 7 as propostas futuras.
26
2 BREVE HISTÓRICO DOS SISTEMAS DE INJEÇÃO DE
COMBUSTÍVEL EM UM MCI
O sistema de injeção eletrônica atual é uma evolução do sistema de injeção
analógica, e que por sua vez, é uma evolução do sistema mecânico de injeção de
combustível.
Os sistemas atuais se valem do desenvolvimento e da redução de custos
pelos quais passou a indústria da eletrônica (BRUNETTI, 2012), além da atual
obrigatoriedade de emitirem menos gases tóxicos na atmosfera.
Motores de ciclo Otto, que funcionam com álcool, gasolina ou ambos
possuem pequenas diferenças comparadas aos motores de ciclo Diesel em seus
sistemas de injeção, sendo que os primeiros necessitam de ar, combustível e
centelha para iniciar seu funcionamento, com uma taxa de compressão que varia
entre 8:1 a 11:1. Os de ciclo Diesel não necessitam de centelha e sua taxa de
compressão é mais alta, podendo variar de 16:1 a 24:1. Também possuem
diferenças construtivas em seus injetores e outros elementos construtivos, mas
ambos necessitam de correta quantidade de combustível injetado e no momento
correto.
Nesse breve histórico, os sistemas não serão analisados quanto ao seu tipo
de combustível, mas se são mecânicos, analógicos ou digitais. O leitor conseguirá
identificar o tipo de combustível devido a presença ou não da vela de ignição nas
figuras, embora isso não seja relevante.
Ao final entenderá basicamente, como é possível determinar a massa de
combustível em cada sistema no momento da injeção.
2.1 Sistema mecânico de injeção de combustível
O sistema de injeção mecânico de combustível, já utilizado em aviões desde
1925, passou a ser utilizado, com bombas em linha em veículos de competição, a
27
partir de 1950 (BRUNETTI, 2012). A figura 1 mostra um exemplo desse sistema, o
K-Jetronic da Bosh, produzido em série a partir de 1973, com os seguintes
componentes: 1. Injetor de combustível; 2. Coletor de admissão; 3. Regulador de ar
adicional; 4. Regulador de partida a frio; 5. Sensor de temperatura do motor-NTC; 6.
Distribuidor de ignição; 7. Injetor suplementar; 8. Borboleta de aceleração; 9.
Parafuso de regulagem da marcha lenta; 10. Regulagem de mistura; 11. Chave de
ignição, 12. Relé de comando; 13. Bomba de combustível, 14. Acumulador de
combustível; 15. Filtro de combustível e 16. Tanque de combustível
Figura 4 - Sistema mecânico de injeção de combustível K-Jetronic da Bosh, 1973. Fonte:
extraído do livro Motores de Combustão Interna Vol.1, Brunetti, 2012.
28
A figura 5 mostra o distribuidor de combustível mais detalhadamente, que é o
componente responsável pelo envio do combustível aos os bicos injetores presentes
no sistema.
Figura 5 - Distribuidor de combustível, regulador de pressão primário e o sensor de massa de
ar do sistema K-Jetronic system. Fonte: adaptado da instrução técnica do sistema K-Jetronic
da Bosh, 1974.
O sistema funciona da seguinte forma: a posição da placa do sensor depende
da quantidade de ar aspirado pelo motor, essa posição é transmitida para o êmbolo
de controle por meio de uma alavanca, dependendo da posição do êmbolo de
controle permite-se a passagem de maior ou menor quantidade de combustível que
fluirá pelos canais (A) até os bicos injetores, item (1) da figura 3.
Esse tipo de sistema embora possua alguns elementos elétricos essenciais
para seu funcionamento como; a bomba de combustível (13), relé de comando (12)
e o distribuidor de ignição (6) não possui uma ECM para gerenciamento e a injeção
29
de combustível é contínua e também não possui loop de correção de combustível
em malha fechada, causando desperdício de combustível.
2.2 Classificações dos sistemas de injeção eletrônica
Os sistemas de injeção eletrônica de combustível podem ser classificados de
várias maneiras, inclusive quanto a sua tecnologia, podendo ser analógicos ou
digitais, que como mencionado anteriormente possuem diferenças na forma de
aquisição, tratamento e transmissão dos sinais de entrada e saída.
No contexto nacional, a Resolução Nº 18 do CONAMA, de 6 de maio de 1986,
que trata dos limites emissões de gases tóxicos, ajudou a expandir o uso e
aprimoramento da injeção eletrônica.
2.2.1 Sistema de injeção de combustível eletrônico analógico
O primeiro sistema de injeção eletrônica lançado no Brasil foi o Le-Jetronic da
Bosh, é um sistema que possui um módulo eletrônico, porém o seu funcionamento é
analógico, esse sistema equipava, por exemplo, o Gol GTi o primeiro carro nacional
com injeção eletrônica lançado no final do ano de 1988 e o Santana GLSi de 1990,
entre outros veículos.
A figura 2 ilustra esse sistema e identifica os seguintes componentes: 1.
Tanque de combustível; 2. Bomba elétrica de combustível; 3. Filtro de combustível;
4. Tubo distribuidor; 5. Regulador de pressão; 6. Unidade de comando do motor; 7.
Válvula injetora; 8. Parafuso de marcha lenta; 9. Sensor da válvula de aceleração;
10. Válvula de aceleração; 11. Sensor de fluxo e temperatura do ar; 12. Relé do
comando; 13. Sensor de temperatura do motor; 14. Válvula auxiliar do condicionador
de ar; 15. Válvula auxiliar de ar; 16. Parafuso de CO; 17. Bateria; 18. Chave de
ignição; 19. Válvula diafragma; 20. Bobina.
30
Figura 6 - Esquema funcional de um sistema analógico de injeção eletrônica. Fonte: extraído
do manual técnico da injeção Le-Jetronic da Bosh, 1995.
No módulo de controle analógico do motor (item 6 - ECM) existem diversos
relés, resistores, e comparadores entre outros componentes eletrônicos básicos, que
calibrados corretamente, criam a lógica eletrônica necessária para combinar os
dados de entrada: volume de ar aspirado, pressão e temperatura ambiente, para
acionar um único atuador, o bico injetor.
A figura 6 ilustra melhor os elementos internos principais que compõem o
sensor de fluxo e temperatura do ar, elemento chave desse sistema.
31
Figura 7 - Sensor de palheta de fluxo e de temperatura do ar. Fonte: extraído do livro Motores
de Combustão Interna Vol.1, Brunetti, 2012.
O funcionamento básico do sensor de fluxo de ar consiste na mensuração da
força que emana da corrente de ar aspirado pelo motor por meio de palhetas, esta
força deve ser suficiente para neutralizar a força oposta aplicada por uma mola pré-
calibrada e presa ao eixo de rotação do conjunto de palhetas A e B, tendendo a
fechar a passagem de ar. Uma espécie de potenciômetro que consiste num contato
metálico com um eixo de rotação solidário ao conjunto, gira sobre uma pista resistiva
e mensura o valor de volume de ar em tensão e o enviando-o à ECM.
Como esse sensor é volumétrico o sistema possui também um sensor de
pressão ambiente e de temperatura para a determinação da vazão do ar em massa
(BRUNETTI, 2012).
Para prevenir oscilações no sistema de admissão, causadas pela própria
admissão, uma aba de compensação está ligado rigidamente à aba do sensor. As
32
oscilações de pressão têm os mesmos efeitos sobre ambas às palhetas e os
momentos de força anulam-se mutuamente para que a medição não seja afetada.
Como os dados desse sistema são puramente analógicos qualquer mau
contato, gripagem etc. acarretam em uma leitura errônea do comportamento dos
sensores e atuação equivocada nos atuadores, nesse caso, os bicos injetores.
Essa geração da Le-Jetronic ainda não trabalha em malha fechada com
sonda lambda para o correto cálculo estequiométrico e correção de combustível
injetado e nem possui diagnóstico embarcado. A figura 8 mostra o interior da ECM
analógica do sistema Le-Jetronic.
Figura 8 – Interior da ECM analógica do sistema Le-Jetronic da Bosh. Fonte: adaptado da
internet, http://produto.mercadolivre.com.br/MLB-710858107-modulo-de-injeco-bosch-kadet-
gsi-le-jetronic-reparaco-_JM, acesso em 01/12/2016.
33
2.2.2 Sistema de injeção de combustível eletrônico digital
O sistema de injeção eletrônica digital é o mais utilizado atualmente,
facilitando inclusive a manutenção. Do mesmo fabricante dos sistemas anteriores, o
LH-Jetronic (1982) é um exemplo de injeção eletrônica digital. Em umas das suas
primeiras versões possuía microcontroladores com 4 kB a 32 kB de memória de
programa e com correção de combustível em malha fechada por sonda lambda
(sensor de O2). A figura 7 ilustra esse sistema de injeção.
Figura 9 - Esquema funcional de um sistema digital de injeção eletrônica. Fonte: Manual
Técnico da Injeção LH-Jetronic da Bosh
34
Nesse sistema há a substituição do sensor de palheta de fluxo e temperatura
do ar pelo sensor MAF. Esse sensor, embora mais moderno, também funciona de
forma analógica, trata-se de um fio de platina aquecido por uma resistência que ficas
exposta ao fluxo de ar que trafega pelo coletor de admissão, uma corrente elétrica é
responsável por compensar o resfriamento do fio mantendo a temperatura de
equilíbrio. Um valor de tensão que corresponde a essa corrente elétrica é enviado ao
conversor A/D de um microcontrolador e posteriormente à sua CPU em formato
digital participando do cálculo da massa de combustível necessária.
Figura 10 - Funcionamento do sensor MAF. Fonte: adaptado de MTE Thomson, 1995.
O sinal da sonda lambda, instalada no coletor de escapamento, faz com que a
ECM, se necessário, realize as correções de massa de combustível a cada ciclo de
funcionamento do motor para atingir a correta relação estequiométrica. Essa
funcionalidade apresenta vantagens quanto à exatidão de massa de combustível
injetada para uma reação de queima mais completa, além de possibilitar a utilização
de diferentes tipos de combustíveis, a exemplo dos motores flex. (BRUNETTI, 2012).
35
Com a utilização de um µC, foi possível carregar sua memória de programa
ROM (Ready Only Memory – Memória Somente de Leitura) com mapas de injeção
de combustível pré-elaborados que são matrizes de dados combinados, cujas
variáveis recebem novos parâmetros a todo instante por meio dos sensores
preenchendo esse mapa e atuando no motor para atender às mudanças de regime
do veículo.
A figura 10 apresenta um diagrama de blocos que ilustra as funcionalidades
de uns dos primeiros microcontroladores utilizados na ECM da LH-Jetronic, o 80535
da fabricante Siemens.
Figura 11 - Esquema funcional do microcontrolador Siemens 80535. Fonte: adaptado do
datasheet, 1995.
No Brasil, a Resolução nº18, de 1º de janeiro de 1997, determina que no ano
de 2008, 11 anos após a sua criação, o limite de emissão de CO deveria reduzir-se
em doze vezes, passando de 24,0 gramas por quilômetro para 2,0 gramas por
quilômetro, reduzir em quatro vezes o índice de CO em marcha lenta, passando de
3,0% para 0,5%, além do HC não queimado, de 2,1 gramas para 0,3 gramas e do
NOx, reduzindo a emissão de 2,0 para 0,6 gramas por quilômetro.
A solução encontrada para o cumprimento dessas determinações em médio
prazo foi iniciar o investimento em projetos que agregassem o sistema eletrônico
digital de gerenciamento, como o já adotado em países mais desenvolvidos. A
36
programação tornou-se uma peça importantíssima na construção de veículos com
MCI, inclusive Diesel, pois foi possível equacionar inúmeros dados físicos e atingir
as metas impostas.
As ECMs modernas agregam uma grande evolução tecnológica e maior
quantidade de programação. Além dos dados típicos de entrada diversos outros
dados de comportamento do sistema são realimentados e analisados em conjunto.
O sistema responde acionando diversos atuadores e informando variáveis para
diversos outros módulos, por exemplo, parâmetros para a TCM (Transmission
Control Module - Módulo de Controle da Transmissão). Além disso, também exigem
uma alta demanda do processador, pois executam na faixa de milhões de cálculos
por segundo, além disso, os dados trafegam em formato digital pela moderna rede
CAN estabelecendo a comunicação entre os módulos.
A figura 11 mostra o interior da ECM de um veículo da Volvo de 1995, o S40,
um modelo importado.
Figura 12 – ECM digital da Bosh que equipa os motores do veículo S40 da Volvo. Fonte:
adaptado da internet, http://forums.swedespeed.com/showthread.php?215698-ECU-Hacking!,
acesso em 01/12/2016
37
Além disso, os componentes sensores também tiveram que evoluir, hoje os
automóveis trabalham com um corpo de borboleta associado a um TPS que
mensura a posição angular do eixo da borboleta, sendo, totalmente fechada 0 V e
totalmente aberta 5 V. A ECM utiliza esse sinal para identificar as condições das
mudanças de regime do motor e se houver aceleração atua no bico injetor
aumentando o tempo de injeção de combustível enriquecendo a mistura A/C. Para
regimes de desaceleração a ECM diminui a injeção de combustível evitando o
desperdício. As figuras 13 e 14 ilustram o funcionamento básico do TPS.
Figura 13 – O TPS detecta posição da borboleta fechada – 0V. Fonte: adaptado de MTE
Thomson, 2014.
Figura 14 - O TPS detecta posição da borboleta aberta – 5V. Fonte: adaptado de MTE Thomson,
2014.
38
3 SISTEMA OPERACIONAL, FIRMWARE, SISTEMA DE TEMPO REAL E SISTEMA OPERACIONAL DE TEMPO REAL
Como mencionado anteriormente, houve a necessidade do setor
automobilístico de se adequar as novas regras de emissão de poluentes. Utilizando
a eletrônica digital para obter sucesso nos novos projetos a fabricação dos softwares
que controlam as ECMs também se modernizou.
Atualmente é possível encontrar, desde softwares mais simples, os chamados
firmwares até sistemas operacionais de tempo real, executando tarefas que atendem
a diferentes níveis de confiabilidade e robustez.
3.1 Sistema Operacional (SO)
“O sistema operacional é uma camada de software colocada entre o hardware
e os aplicativos, aqueles programas que fazem as tarefas dos usuários do
computador” (Oliveira, 2010).
“É um software básico de qualquer computador, pois fornece ao usuário uma
interface conveniente e, ao mesmo tempo, gerencia o hardware, controlando de
forma ordenada e eficiente o acesso ao processador, memória e dispositivos de
entrada e saída pelos aplicativos que os disputam” (Pinto Neto, 2014).
No contexto da computação um SO é projetado para receber um estímulo (ou
evento), que pode ser interno ou externo, realizar o processamento e produzir uma
saída (Sérgio Prado, 2015), nas duas primeiras definições é possível notar a estreita
relação entre um sistema operacional e um computador multitarefas, no caso um
hardware com periféricos como monitor, teclado e mouse.
Sistemas operacionais como Linux, por exemplo, possuem um kernel de
processamento e controle que permite que um usuário ou vários executem vários
programas, aparentemente de forma simultânea, o sistema operacional ou também
chamado de operativo tem por funções abrigar o kernel, os aplicativos, realizar a
39
gestão geral dos recursos do hardware e principalmente servir de interface entre o
computador e o usuário.
3.2 Firmware on bare metal
O termo firmware on bare metal significa que no hardware não há uma
camada de sistema operacional, é um software semipermanente podendo ou não
ser atualizado com frequência, servindo geralmente para o funcionamento básico do
embarcado, como por exemplo, um teclado de computador ou uma impressora.
Geralmente o sistema de gerenciamento de um embarcado é uma espécie de
firmware multitasking (software permanente multitarefa).
A figura 15 mostra a estrutura das camadas de software existente em um
computador convencional e uma impressora, de baixo para cima, o hardware,
essencial em ambos, é responsável por abrigar todos os softwares, em seguida vem
o firmware, no computador ele é responsável por ligar o computador BIOS (Basic I/O
System – Sistema Básico de Entradas e Saídas) e na impressora ele abriga o
controlador (driver) que é responsável por torná-la reconhecível ao computador.
Além disso, no computador ainda existem o kernel, que é o componente central
dentro de um sistema operacional que cria uma interface de comunicação entre o
hardware e o software (www.freertos.org, 2016), e os aplicativos, que executam as
tarefas com interface do usuário.
Já a figura 16 ilustra a camada de software que roda no Kit PIC 18, composto
de um firmware como no exemplo da impressora, porém funciona com interação
com o meio externo, que é realizada através dos sinais enviados pelos sensores, por
se tratar de uma ECM.
40
Figura 15 – Camadas de software localização do firmware. Fonte: adaptado de
http://slideplayer.com.br/slide/2264943/
Figura 16 - Camadas de software do Kit PIC 24. Fonte: elaborado pela autora.
41
3.3 Sistema de Tempo Real
Sistemas que trabalham com eventos que possuem restrições de tempo são
chamados de “Sistemas de Tempo Real” e também são sistemas operacionais
multitasking (multitarefa). Essas restrições impõem limites de tempo entre o estímulo
ser processado e gerar a saída correspondente. (Sérgio Prado, 2015). A essa
capacidade dá-se o nome de determinismo, isso não significa que o sistema tenha
que ser rápido, mas deve agir tempo, cumprindo os prazos. Essa é uma
característica fundamental em um sistema de tempo real.
As figuras 17 e 18 exemplificam de forma didática a diferença entre as
restrições de tempo e a reação adequada exigida do piloto em cada sistema.
Figura 17 – Restrição temporal mais tolerante. Fonte: elaborado pela autora.
Figura 18 – Restrição temporal mais rígida. Fonte: elaborado pela autora.
42
Sistemas de tempo real são complexos, pois lidam com múltiplos eventos de
entrada e devem produzir várias saídas, normalmente os sistemas embarcados em
microcontroladores são multitasking, pois realizam mais que uma atividade de
controle ou monitoramento no caso de microcontroladores com apenas um núcleo
de processamento. Nesses processadores é realizado um chaveamento entre as
tarefas (tasks) para que todas tenham acesso ao processador, executando uma
tarefa de cada vez. Se um sistema operacional pode executar vários programas ou
tarefas de forma aparentemente simultânea, é considerado um sistema multitasking
(www.freertos.org, 2016).
A figura 19 ilustra como o chaveamento entre as tasks é realizado causando
essa impressão de simultaneidade.
Figura 19 - Dinâmica de funcionamento das tarefas em um sistema multitasking. Fonte:
adaptado de www.freertos.org/implementation/a00004.html
Sistemas multitasking de baixa complexidade são desenvolvidos como
sistemas foreground/background (primeiro plano/segundo plano). A aplicação
consiste em um loop (laço) infinito que chama algumas funções para realizar as
43
operações desejadas (background) sendo que as rotinas de tratamentos de
interrupções tratam eventos assíncronos (foreground) (Sérgio Prado, 2015).
A figura 20 mostra como é feita a programação descrita acima, sendo uma
ótima solução para projetos pequenos e com requisitos modestos de restrição de
tempo, sendo de fácil implementação.
Figura 20 - Técnica de programação chamada de super-loop. Fonte: Sergio Prado, treinamento
de FreeRTOS, 2015.
A desvantagem desse sistema, chamado de super-loop (super-laço), é que
todo o código em background tem a mesma prioridade e se uma das funções
demorar mais do que o esperado, todo o sistema será impactado. A figura 21 ilustra
essa desvantagem criada por meio da programação.
44
Figura 21 - Desvantagem do Super-Loop. Fonte: Sergio Prado, treinamento de FreeRTOS,
2015.
Sistemas foreground/background são, de fato, as arquiteturas mais comuns
para aplicações embarcadas, mas, qualquer alteração em determinada parte do
código pode impactar no tempo de resposta de todo o sistema e por isso pode ser
difícil de manter o código com múltiplos desenvolvedores.
3.4 Sistema Operacional de Tempo Real (RTOS)
Um RTOS pode ser uma solução em projetos de maior porte com sistemas
que possuem restrições de tempo e não podem admitir deficiências, a exemplo do
super-loop. Um RTOS é capaz de responder aos eventos de maneira previsível
dentro do calendário de restrições especificadas mesmo havendo alterações no
código, exceto algumas alterações na configuração de sua API.
Sistemas Operacionais de Tempo Real são construídos utilizando um kernel
de tempo real; um software responsável por gerenciar o tempo, os recursos da CPU,
o uso da memória, a comunicação entre as tarefas e interrupções, além de gerenciar
o acesso aos recursos da aplicação (hardware, estruturas de dados etc) e promover
outras funcionalidades (timers, tracing etc) (Sérgio Prado, curso 2015).
45
Para esse projeto a estrutura de software da ECM construída não possui uma
camada de firmware e sim um Sistema Operacional de Tempo Real. A figura 22
ilustra a estrutura das camadas de software do Kit PIC 24,
Figura 22 - Camadas de software do Kit PIC 24. Fonte: elaborado pela autora.
Aqui o hardware é gerenciado por um RTOS sendo seu kernel também de
tempo real. O sistema operacional fornecerá as aplicações, que são na verdade
tarefas (tasks), programadas especificamente para criar um sistema de injeção
eletrônica básico da ECM. Os detalhes de funcionamento do RTOS utilizado nesse
projeto serão descritos com maiores detalhes na secção 4.2.
Quanto às restrições de tempo de um RTOS, podem ser classificado como
Soft Real-Time; quando há maior tolerância quanto às restrições de tempo e quando
não atingida não inutiliza o sistema, não gera consequências catastróficas ou
quando há apenas a percepção de baixa qualidade do sistema, por exemplo, um
sistema baseado na internet ou uma comunicação simples entre pessoas, e Hard
Real-time; quando as restrições de tempo precisam ser atingidas, caso contrário,
ocorrem consequências catastróficas ou o sistema é inutilizado, como por exemplo,
uma parada de emergência de um comboio sem condutor frente a um obstáculo
46
(Hassan Gomaa, 2016). O termo comumente utilizado para definir esse atendimento
de prazos é deadline (data limite). A figura 23 ilustra didaticamente os conceitos
Soft Real Time e Hard Real Time.
Figura 23 – Diferença entre Soft e Hard Real Time. Fonte: elaborado pela autora.
Baseado no conceito de prioridades e tasks, as funcionalidades de um
sistema escrito em RTOS devem ser divididas em tarefas e a cada uma delas dada
uma prioridade, ficando sob a responsabilidade do desenvolvedor a decisão de
como isso será feito (Sérgio Prado, curso 2015). As tarefas devem ser bem definidas
e o contexto de cada uma deve ser objetivo.
O termo context switching, é o nome dado à mudança de contexto entre as
tarefas sendo que o kernel é responsável por salvar todas as informações ou
contexto (stack - pilha, registradores da CPU etc) referentes a cada tarefa que se
encontra em execução quando essa mudança de contexto ocorre. O contexto é
administrado por uma estrutura chamada de TCB (Task Control Block – Bloco de
Controle de Tarefa). Quando ocorre a mudança de contexto a tarefa em execução é
interrompida, os registadores do processador são salvos na memória e os mesmos
registradores são atualizados com os dados da próxima tarefa e então a nova tarefa
entra em execução; esse processo se repete continuamente. A figura 24 ilustra o
gerenciamento da stack de uma task pelo TCB.
47
Figura 24 - Típico gerenciamento da stack (pilha) pelo TCB. Fonte: adaptado do livro Real-Time Systems Design and Analysis, 2012.
O sistema operacional gerencia os TCBS, mantendo o controle do estado de
cada tarefa. Normalmente, uma tarefa pode estar em qualquer um dos seguintes
estados:
1. Executing or Running (Executando): é a task em andamento, em um
processador de apenas um núcleo pode haver apenas uma tarefa em
andamento de cada vez. No caso do FreeRTOS quando a tarefa é
completada ela retorna para o estado suspenso ou boqueado (blocked).
2. Ready (Pronto): tasks nesse estado estão prontas para executar, mas não
estão em andamento, pois uma tarefa diferente de igual ou maior
prioridade já está em estado de execução.
3. Blocked (Bloqueado): tasks que estão a espera de qualquer evento
externo ou temporal. Por exemplo, se uma tarefa chama vTaskDelay( ) ela
irá bloquear (será colocada em blocked state) até que o período de atraso
(delay) seja expirado. As tarefas também podem bloquear por esperar por
filas, semáforos, grupo de eventos, notificação ou evento semáforo. Tasks
48
em estado blocked normalmente tem um período de timeout (tempo
esgotado).
4. Suspended (Suspenso): Como as tarefas que estão em blocked state
tarefas que estão em suspended state não podem ser selecionadas para
entrar em running e não possuem timeout, em vez disso, elas só entram
ou saem do estado suspenso quando lhes é ordenado explicitamente fazê-
lo através do vTaskSuspend ( ) e xTaskResume ( ).
5. Dormant (Latente): esse estado é usado somente em sistemas que o
número de TCBS é fixo. Uma task nesse estado é mais bem definida
como uma tarefa que existe, mas não está no momento, disponível para
agendamento. (LAPLANTE; OVASKA, 2012).
No FreeRTOS as tarefa transitam pelos estados chamando para a execução
funções específicas contidas no kernel, como mostra a figura 25.
Figura 25 - Transições de estados válidos das tasks no FreeRTOS. Fonte: http://www.freertos.org/RTOS-task-states.html, acesso em 01/10/2016.
49
O context switching é ativado de diferentes maneiras, uma tarefa pode
bloquear esperando um recurso estar disponível, uma tarefa pode dormir por um
tempo ou ainda ser suspensa involuntariamente pelo kernel.
Utilizando um RTOS a programação é orientada à eventos evitando as rotinas
de pooling; técnica de programação que consiste em ficar perguntando
constantemente para a variável, por meio de um laço if ou while, se o valor dela já
chegou no valor desejado, tomando 100% do tempo de um processador e gerando
desperdício de CPU. Além disso, melhora a modularidade e manutenção do sistema
e reuso de código, já que as aplicações são definidas em tarefas, facilita os testes,
pelo fato de que cada tarefa é uma entidade independente e também o
desenvolvimento em equipes com múltiplos desenvolvedores.
3.4.2 O escalonador de tarefas de um RTOS
A API de um RTOS é uma espécie de biblioteca que possui um conjunto de
rotinas, protocolos e ferramentas padrões do RTOS, tornando a programação de um
RTOS, no nível de aplicação, mais fácil.
A principal rotina de um kernel de tempo real é o escalonador de tarefas
(scheduler), e em uma aplicação com diversas tasks em um microcontrolador de
apenas um core (núcleo) o scheduler é o responsável por decidir qual a próxima
tarefa que será executada. Essa rotina entra em ação durante o context switching.
No caso do FreeRTOS, o scheduler pode funcionar de forma pre-emptive sem
time slice (de preferência sem fatia de tempo), pre-emptive (de preferência) ou
cooperative (coperativo), a configuração do escalonador pode ser realizada por meio
da sua API de configuração no módulo customização.
A figura 26 ilustra o funcionamento do escalonamento pre-emptive, que
consiste basicamente em atribuir graus de prioridades diferentes a cada task, sendo
que a task de maior prioridade será executada primeiro. Nesse tipo de
escalonamento se a task de maior prioridade estiver pronta para a execução o
kernel salvará imediatamente todo o contexto da task em execução, e irá colocar em
execução uma task de maior prioridade (LI; YAO, 2003). A vantagem mais clara é a
50
possibilidade de priorizar tarefas para garantir que as restrições de tempo da
aplicação sejam atendidas.
Figura 26 – Escalonamento pre-emptive sem time slice. Fonte: Fonte: adaptado de http://www.embeddedlinux.org.cn/rtconforembsys/5107final/LiB0024.html, acesso em 01/12/2016.
O escalonamento pre-emptive concede prioridades diferentes e o mesmo time
slice para todas as tarefas com prioridades que podem ser diferentes. A figura 27
ilustra esse tipo de escalonamento
Figura 27 - Escalonamento pre-emptive. Fonte: adaptado de http://www.embeddedlinux.org.cn/rtconforembsys/5107final/LiB0024.html, acesso em 01/12/2016.
51
No escalonamento cooperativo todas as tasks possuem uma mesma
prioridade e não há uma definição de tempo para elas, o context switching ocorre
somente quando a tarefa que está rodando utilizar comandos do processador que
indique qual a task deverá ser executada em seguida. A figura 28 ilustra esse tipo de
escalonamento.
Figura 28 - Escalonamento cooperativo. Fonte: elaborado pela autora.
Outras políticas de escalonamento:
FIFO: (First-in, First-out - Primeiro a entrar, Primeiro a sair) ou (First-Come,
First-Served - Primeiro a chegar, Primeiro a ser servido): algoritmo de
escalonamento de fila simples, onde o primeiro elemento a ser retirado é o
primeiro elemento que foi inserido.
Round-robin: consiste em atribuir frações de tempo em partes iguais para
cada task sem estabelecer prioridades manipulando todas as tasks. Muitos
sistemas operacionais de tempo real usam uma política de escalonamento
Round-Robin, porque é simples e previsível, porém, é de interesse descrever
algoritmos de escalonamento mais populares de forma mais rigorosa.
(Laplante, Ovaska, 2012).
52
3.4.3 RTOS para embarcados
Um sistema embarcado em tempo real é um sistema de computador em
tempo real (hardware e software) que faz parte de um sistema maior (chamado
sistema em tempo real ou sistema cibernético) que normalmente tem peças
mecânicas e / ou elétricas, como um avião ou um automóvel. (Gomaa, 2016)
Atualmente a maioria dos embarcados é construída para atender restrições
de tempo, desde fornos de micro-ondas, passando por gravadores de blue-ray até
trens sem condutores e naves espaciais que exploram os confins do universo, essas
máquinas devem receber as ordens em um tempo correto para garantir uma
operação suave e responder às solicitações.
Um sistema de tempo real embarcado pode ser concebido para se ter um
sistema de arquitetura em camadas, como mostra a figura 29, que consiste no
sistema operacional de tempo real, na aplicação em tempo real e o hardware como
plataforma física.
Figura 29 – Arquitetura em camadas de um sistema embarcado em tempo real. Fonte: extraído do livro Real Time Software Design For Embedded Systems, Gomaa 2016.
Os sistemas incorporados em tempo real (tanto centralizados como
distribuídos) possuem aracterísticas que os distinguem de outros sistemas de
software:
53
A) Interação com o ambiente externo: um sistema embarcado de tempo real
interage com um ambiente externo que é em grande parte não humano. Por
exemplo, o sistema em tempo real pode ser o controle de máquinas ou pode estar
monitorando processos químicos e notificando as condições por alarmes.
B) Sensores e atuadores: a interação com o ambiente externo necessita de
sensores para receber dados do ambiente externo e atuadores para saída de dados
para e controlar o ambiente interno/externo, como mostra a figura 30.
C) Tempo de medição: um sistema em tempo real modela a passagem do
tempo do passado através do presente e no futuro. Um evento ocorre em um
instante de tempo (conceito de tempo zero). Uma duração é um intervalo de tempo
entre dois eventos, um evento inicial e um evento final. Um período é uma medida
de intervalos recorrentes da mesma duração.
Figura 30 - Sistema de tempo real embarcado. Fonte: livro Real Time Software Design For
Embedded Systems, 2016.
54
Atualmente para realizar a programação de um RTOS para um embarcado
existem ferramentas acessíveis e eficientes. Um método de projeto de software em
tempo real para sistemas embarcados deve ser capaz de abordar as seguintes
características:
Modelagem estrutural: modelar o domínio do problema, limite total do
hardware e software, componentes de interface entre hardware e software e os
limites do sistema de software.
Modelagem dinâmica (comportamental) - para modelar as sequências de
interação entre sistema e artefatos de software nos requisitos, análise e níveis de
design.
Máquinas de estado - para reagir a eventos externos, conforme determinado
pela entrada e o estado atual do sistema.
Concorrência - para lidar com múltiplas sequências de entrada e cargas
imprevisíveis, modelando atividades que executam em paralelo umas com as outras.
Arquitetura de software baseada em componentes - para fornecer uma
arquitetura consistente de componentes orientados a objetos concorrentes e
conectores, de modo que os componentes possam ser implantados em diferentes
nós em um ambiente distribuído.
Análise de desempenho de projetos em tempo real - analisar o desempenho
em tempo real antes da sua implementação, a fim de determinar rapidamente se o
sistema atingirá seus objetivos de desempenho.
Estes requisitos são todos abordados pelo projeto de software em tempo real
COMET/RTE (Concurrent Object Modeling and Architectural Design Method for
Real-Time Embedded Systems - Simulação Concorrente de Objetos e Método de
Projeto Arquitetural para Sistemas Embarcados em Tempo Real) (Gomaa,2016).
55
4 METODOLOGIA
Neste capítulo serão detalhadas as etapas de construção dos hardwares Kit
PIC 24, gerador e do condicionador de sinais, a programação FreeRTOS para o Kit
PIC 24 as finalizações construtivas, algumas adaptações no já existente firmware de
injeção eletrônica do Kit PIC 18 e sua programação final.
4.1 Projeto do hardware Kit PIC 24
A construção do hardware que serve de base ao PIC 24 seguiu quatro etapas
principais: escolha do microcontrolador, confecção dos esquemas elétricos,
montagem e testes.
4.1.1 Análise e escolha do µC
Para a escolha do microcontrolador foi necessário consultar a documentação
básica do FreeRTOS disponível no site, nela há uma listagem de µCs compatíveis
com o sistema, onde o PIC 24 está incluído. Optou-se pelo PIC 24 pelos seguintes
motivos:
Disponibilidade do PIC 24 no mercado a preço acessível.
Documentação com os detalhes de montagem da placa de desenvolvimento,
Explorer 16, comercializado pela fabricante Microchip, o qual utiliza um PIC
24FJ128GA010.
Para iniciar o estudo dessa portabilidade e o desenho definitivo do esquema
elétrico do Kit PIC24 foram combinados os esquemas elétricos da Explorer 16 e os
esquemas elétricos disponíveis no datasheet do PIC 24FJ256GB106. Após a análise
dos dois esquemas e das especificações foi montada uma tabela comparativa a fim
56
de determinar as principais características de cada um dos µCs e a portabilidade,
como mostra a tabela 1.
Tabela 1 – Comparação entre PICs - recursos básicos e tensão de alimentação
Fonte: Adaptado do site da Microchip, 2016
Analisando a tabela 1 constatou-se uma grande semelhança de recursos entre
os dois microcontroladores. Uma das preocupações era a quantidade de memória
de programa disponível, a EPROM (Erasable Programmable Ready Only Memory -
Memória Apagável e Programável Somente para Leitura) que é o local de
armazenamento do código feito em FreeRTOS, porém o PIC 24FJ256GB106 possui
uma memória de 256 kB, o que é mais do que suficiente para abrigar o código, só o
kernel ocupa aproximadamente 4 kB. Também era necessário que houvesse no
mínimo uma interrupção para ser utilizada como entrada do sinal PIP e no mínimo
duas entradas analógicas para os sinais temperatura e TPS, o que foi atendido. As
demais diferenças entre os dois modelos de PIC 24 não comprometem o projeto.
Todo esse processo foi necessário, pois o modelo do PIC da Explorer 16 não foi
encontrado para compra.
4.1.2 Diagrama de blocos do hardware
Antes de iniciar o desenho do esquema elétrico e já com o modelo do PIC24 a
ser utilizado definido, o 24FJ256GB106, foi necessário montar um diagrama de
blocos facilitando a visualização de como ficaria o hardware final. A intenção era
Produto
Tensão de
Operação
Mínima (V)
Tensão de
Operação
Máxima (V)
Memória de
Programa
(KB)
Memória
RAM
(Bytes)
Nº
Pinos
Pinos
I/O
Canais
ADC
Interrupção
Externa
Ferramenta de
gravação
PIC Kit 3
PIC24FJ128GA010
(Explorer 16)2 3.6 128 KB 8192 100 85 16 4 Sim
PIC24FJ256GB106
(disponível no mercado)2 3.6 256KB 16384 64 52 16 1 Sim
57
montar um hardware simples que atendesse aos requisitos mínimos de uma injeção
eletrônica.
A figura 15 mostra o diagrama de blocos contendo a alimentação do
microcontrolador, os sensores: PIP, que simula o sinal distribuidor de ignição do
veículo, o TPS, que simula o sinal do acelerador, o sinal do sensor de temperatura
ambiente, um botão (entrada extra) e os atuadores: pulso de injeção de combustível,
LCD e LEDS, além do conector de gravação que utiliza protocolo ICSP (In Circuit
Serial Programing – Circuito de Programação Serial).
Figura 15 – Diagrama de blocos inicial do hardware. Fonte: elaborado pela autora.
4.1.3 Definição das funções dos pinos
Ainda nessa fase foram definidas as funções de cada pino do PIC24 e
embora o chip possua 64 pinos disponíveis foram utilizados somente 35 pinos que
58
atendem a todas as funcionalidades estabelecidas para esse projeto. A tabela 2
mostra quais foram os pinos utilizados com suas respectivas funções.
Tabela 2 - Definição das funções dos pinos
Número
do pino
Nome
do pino
Função
definida
Modo de
trabalho Descrição
HW/SW
1 PMD5/CN63/RE5 RE5 - LCD Saída
Digital Display (D5)
2 SCL3/PMD6/CN64/RE6 RE6 - LCD Saída
Digital Display (D6)
3 SDA3/PMD7/CN65/RE7 RE7 - LCD Saída
Digital Display (D6)
7 MCLR RESET Entrada
digital
Acionamento
de RESET
por botão
9 VSS GND Terra Terra
10 VDD VCC Alimentação Alimentação
de 3.3V
11 PGEC3/AN5/C1INA/VBUSON/RP18/CN7/RB5 Clock
Gravação E/S Digital
Protocolo
ICSP
12 PGED3/AN4/C1INB/USBOEN/RP28/
CN6/RB4
Dados
Gravação E/S Digital
Protocolo
ICSP
15 PGEC1/AN1/VREF-/RP1/CN3/RB1 AN1 - LM Entrada
Analógica
Leitura da
temperatura
16 PGED1/AN0/VREF+/RP0/PMA6/CN2/RB0 AN0 - TPS Entrada
Analógica
Leitura da
aceleração
17 PGEC2/AN6/RP6/CN24/RB6 RB6 Saída
Digital
LED 0
(amarelo)
18 PGED2/AN7/RP7/RCV/CN25/RB7 RB7 Saída
Digital
LED 1
(amarelo)
19 AVDD VCC
Alimentação Alimentação
de 3.3V
59
20 AVSS GND Terra Terra
21 AN8/RP8/CN26/RB8 RB8 Saída
Digital
LED 2
(amarelo)
22 AN8/RP8/CN26/RB9 RB9 Saiída
Digital
LED 3
(amarelo)
23 TMS/CVREF/AN10/PMA13/CN28/RB10 RB10 Saída
Digital
LED 4
(amarelo)
24 TDO/AN11/PMA12/CN29/RB11 RB11 Saída
Digital
LED 5
(verde)
27 TCK/AN12/PMA11/CTED2/CN30/ RB12 RB12 Saída
Digital
LED 6
(verde)
30 AN15/RP29/REFO/PMA0/CN12/ RB15 RB15 -
LCD
Saída
Digital Display (E)
33 RP16/USBID/CN71/RF3 RF3 -
Botão
Entrada
Digital
Acionamento
de botão
38 VDD VCC Alimentação Alimentação
de 3.3V
39 OSCI/CLKI/CN23/RC12 OSCI Oscilador
externo
Cristal de 8
MHz
40 OSCO/CLKO/CN22/RC15 OSCI Oscilador
externo
Cristal de 8
MHz
41 VSS GND Terra Terra
49 VCPCON/RP24/CN50/RD1 RD1 Saída
Digital
Saída do
pulso de
injeção
52 RP25/PMWR/CN13/RD4 RD4 - LCD Saída
Digital Display (RW)
53 RP20/PMRD/CN14/RD5 RD5 - LCD Saída
Digital Display (RS)
56 VCAP/VDDCORE VDDCORE Alimentação
Alimentação
do núcleo
(2.5V)
57 ENVREG ENVEREG Alimentação Alimentação
do núcleo
60
(2.5V)
60 PMD0/CN58/RE0 LCD Saída
Digital Display (D0)
61 PMD1/CN59/RE1 LCD Saída
Digital Display (D1)
62 PMD2/CN60/RE2 LCD Saída
Digital Display (D2)
63 PMD3/CN61/RE3 LCD Saída
Digital Display (D3)
64 PMD4/CN62/RE4 LCD Saída
Digital Display (D4)
Fonte: adaptado do datasheet, Tabela da descrição da pinagem – família PIC24FJ256GB110.
4.1.4 Acomodação do PIC utilizando placa adaptadora
Como o encapsulamento do PIC 24 adquirido é do tipo TQFP, portanto foi
necessário adquirir uma placa adaptadora a fim de facilitar a sua fixação na chapa
fenolite e a conexão de outros componentes necessários. O resultado da adaptação
e a localização final dos pinos utilizados são mostrados na figura 20.
61
Figura 31 – Adaptação do PIC 24 em placa adaptadora. Fonte: elaborado pela autora.
4.1.5 Requisitos mínimos para funcionamento do µC
Para iniciar o desenho do esquema elétrico do Kit PIC 24 foi necessário
pesquisar sobre as conexões básicas do PIC24FJ256GB106 em seu datasheet,
disponível no site da fabricante Microchip. Desse datasheet foram utilizados o
esquema elétrico dos capacitores de desacoplamento, tensão do núcleo do µC e o
botão de reset do microcontrolador, o pino MCLR.
Já a documentação da Explorer 16 forneceu os esquemas elétricos da fonte
de alimentação de 3.3 V, do oscilador externo e do LCD 16x2.
4.1.5.1 Fonte de Alimentação de 3.3.V
A família do PIC 24 trabalha com fontes de alimentação que podem variar de
2 V a 3.6 V. Para esse projeto foi utilizada uma fonte de 3.3 V construída com o
62
regulador de tensão LM1117. Nesse caso utilizou-se uma fonte comercial com
tensão de saída de 12 V que alimenta o regulador. Os diodos D1 e D2 tem a função
de proteger o circuito contra uma possível tensão reversa, os capacitores C1 e C3
filtram oscilações de alta frequência e juntamente com os capacitores e C2 e C4
(eletrolíticos) fazem o circuito integrado trabalhar de forma estável, a indicação dos
capacitores foi obtida no datasheet do LM1117, o LED D3 é somente uma indicação
de que a fonte está em funcionamento. A figura 16 apresenta o esquema elétrico da
fonte de 3.3 V.
Figura 16 - Fonte de alimentação de 3.3V para microcontroladores família PIC24FJ256GB110
Fonte: adaptado do datasheet da placa de desenvolvimento Explorer 16, 2014.
4.1.5.2 Capacitores de desacoplamento, tensão do núcleo do µC e MCRL
Os capacitores de desacoplamento possuem como função no circuito manter
estável a alimentação do chip, já que em circuitos integrados, o formato digital de
funcionamento, convencionalmente 0-desligado ou 1-ligado, compromete a
alimentação aumentando a demanda energética de uma hora para outra. O
datasheet do PIC determina a utilização de capacitores de desacoplamento (C6-
C10) entre todos os pinos de alimentação do µC (VSS/VDD-AVSS/AVDD) devendo
ficar os mais próximos possíveis dos pinos correspondentes.
63
O PIC 24 necessita de uma alimentação em seu núcleo de 2.5 V que é
proporcionada por um regulador interno ao chip e que pode ser conseguida
inserindo 3.3V no pino ENVREG como informa o datasheet.
Além disso, o circuito do pino MCRL (master-clear), utilizado pelo sistema de
gravação ICSP e pelo RESET do µC não necessitou de um capacitor filtro para
efeito bouncing, que consiste em um mau contato de curta duração decorrente da
construção mecânica da chave/botão, gerando incerteza do estado lógico do sinal
que será lido pelo µC. O esquema elétrico com as conexões citadas pode ser
visualizado na figura 17.
Figura 17 – Conexões básicas recomendadas capacitores de desacoplamento e MCRL. Fonte:
adaptado de Microchip, datasheet PIC24FJ256GB110, 2009.
4.1.5.3 Oscilador externo
Um oscilador serve para determinar o ritmo de andamento e sincronizar a
lógica interna das operações realizadas no microcontrolador. Nesse projeto o PIC 24
64
trabalha com um cristal de quartzo externo de 8 MHz, posicionado a no máximo
12mm dos pinos de conexão juntamente com dois capacitores de carga.
O circuito de clock externo foi escolhido em detrimento ao uso do oscilador
interno RC (resistor/capacitor) que o µC possui que é mais sensível a temperatura,
ou seja, a frequência se altera em função da temperatura. Os cristais possuem
grande estabilidade e precisão na geração de frequências gerando uma frequência
de clock confiável.
O oscilador interno foi configurado para multiplicar a frequência de 8 MHz do
cristal através de um circuito PLL (Phase Lock Loop – Loop de Bloqueio de Fase),
desta forma se obtém uma frequência de trabalho de 32 MHz. Todas as instruções
da CPU são executadas com um ciclo de máquina, 16 MHz (65,5ns), exceto as
instruções de desvio de programa e chamadas de funções. O circuito do oscilador
pode ser visualizado na figura 18.
Figura 18 – Circuito do oscilador externo. Fonte: adaptado do datasheet da placa de
desenvolvimento Explorer 16, 2014.
65
4.1.5.4 LCD 16x2
As conexões do LCD são idênticas as do datasheet da Explorer 16, isso
possibilitou o uso da biblioteca lcd.c, que realiza a inicialização do LCD utilizada no
código demonstração do FreeRTOS com a adição de novas funcionalidades.
Figura 22 – Circuito do LCD, elaborado no Proteus. Fonte: adaptado do datasheet da placa de
desenvolvimento Explorer 16, 2014.
4.1.5.5 LEDS e botão
Como já dito o PIC 24 possui somente 64 pinos ao contrário da Explorer 16
que possui um µC de 100 pinos os LEDS precisaram ser conectados ao port B por
não haver port A. Além disso, foi incluída uma entrada com um resistor de pull-up
onde um botão foi conectado, agregando uma entrada extra para eventuais testes e
funcionalidades no Kit PIC 24. O circuito que contem os LEDS e o botão pode ser
visualizado na figura 23.
D7
14
D6
13
D5
12
D4
11
D3
10
D2
9D
18
D0
7
E6
RW
5R
S4
VS
S1
VD
D2
VE
E3
DISPLAY LCD
3.3VR
E0
RE
1
RE
2
RE
3
RE
4
RE
5
RE
6
RE
7
RV2
3.3V
RB
15
RD
5
RD4
66
Figura 23 – Circuito dos LEDS e do botão, desenhado no Proteus. Fonte: adaptado do
datasheet da placa de desenvolvimento Explorer 16, 2014.
4.1.5.6 Resultado da montagem do Kit PIC 24 e teste inicial
Após a finalização da montagem do Kit PIC 24 foi realizado um teste de
funcionamento básico utilizando o gravador PIC Kit 3 da fabricante Microchip que
grava toda a família do PIC24. Já o software gravado foi uma aplicação demo
original escrita para PIC 24 na versão 9.0.0 do FreeRTOS, disponibilizada no site do
produto, em conjunto com a IDE MPLABX v.3.20 e compilador XC16 v.1.25
disponibilizados pela Microchip no site da fabricante.
Essa aplicação consiste na criação de quatorze tarefas, cinco co-rotinas e um
teste de interrupção de alta frequência.
O hardware se comportou de maneira esperada obtendo sucesso nesse
primeiro teste. A figura 32 mostra a finalização do Kit PIC 24 em funcionamento com
o software de teste.
RB0/PMA6/CN2/RP0/VREF+/AN0/PGED116
RB1/CN3/RP1/VREF-/AN1/PGEC115
RB2/CN4/RP13/C2INB/AN214
RB3/CN5/C2INA/AN313
RB4/CN6/RP28/C1INB/AN4/PGED312
RB5/CN7/RP18/C1INA/AN5/PGEC311
RB6/CN24/RP6/AN6/PGEC217
RB7/CN25/RP7/AN7/PGED218
RB8/CN26/RP8/AN821
RB9/PMA7/CN27/RP9/AN922
RB10/PMA13/CN28/CVREF/AN10/TMS23
RB11/PMA12/CN29/AN11/TDO24
RB12/PMA11/CN30/CTED2/AN12/TCK27
RB13/PMA10/CN31/CTED1/AN13/TDI28
RB14/PMA1/CN32/RP14/CTPLS/AN1429
RB15/PMA0/CN12/RP29/REFO/AN1530
RC12/CN23/CLKI/OSCI39
RC13/CN1/C3IND/SOSCI47
RC14/CN0/T1CK/RPI37/C3INC/SOSCO48
RC15/CN22/CLKO/OSCO40
RD0/CN49/RP1146
RD1/CN50/RP2449
RD2/CN51/RP2350
RD3/PMBE/CN52/RP2251
RD4/PMWR/CN13/RP2552
RD5/PMRD/CN14/RP2053
RD6/CN15/C3INB54
RD7/CN16/C3INA55
AVDD19
AVSS20
RE0/PMD0/CN5860
RE1/PMD1/CN5961
RE2/PMD2/CN6062
RE3/PMD3/CN6163
RE4/PMD4/CN6264
RE5/PMD5/CN631
RE6/PMD6/CN64/SCL32
RE7/PMD7/CN65/SDA33
RF0/CN6858
RF1/CN6959
RF2/CN70/RP3034
RF3/CN71/RP1633
RF4/PMA9/CN17/RP10/SDA231
RF5/PMA8/CN18/RP17/SCL232
RF6/CN72/INT0/RPI45/ASCK135
RG2/CN83/SCL137
RG3/CN84/SDA136
RG6/PMA5/CN8/RP21/C1IND4
RG7/PMA4/CN9/RP26/C1INC5
RG8/PMA3/CN10/RP19/C2IND6
RG9/PMA2/CN11/RP27/C2INC8
MCLR7
ENVREG57
RD8/CN53/RP2/RTCC42
RD9/CN54/RP443
RD10/PMCS2/CN55/RP344
RD11/PMCS1/CN56/RP1245
VCAP/VDDCORE56
PIC24FJ256GB106
LED 6
LED 5
LED 4
LED 3
LED 2
LED 7
LED 8
R8
R7
R6
R5
R4
R9
R10
3.3V
C13
R10
3.3V
R11
BT0
470R
470R
470R
470R
470R
470R
470R
10K
470R
0.1uF
67
Figura 32 - Hardware Kit PIC 24 finalizado em primeiro teste de funcionamento com aplicação
demonstrativa para PIC 24 em FreeRTOS. Fonte: elaborado pela autora.
4.1.6 Projeto do gerador de sinais para o Kit PIC 24 e Kit PIC 18
Um automóvel comum possui uma grande quantidade de sensores e por isso
mais variáveis que compõem seu software de controle de injeção, como mencionado
anteriormente a ECM construída com o Kit PIC 24 e o Kit PIC 18 receberão uma
quantidade menor de sinais.
68
Foi proposta a construção de um gerador de sinais para simular apenas o
PIP, TPS e a temperatura.
4.1.6.1 Fonte de 5V
Optou-se por construir uma fonte com saída de 5 V para a alimentação dos
circuitos geradores do PIP, sensores de temperatura e TPS em detrimento a
utilização da tensão de 5 V disponibilizada pelo Kit PIC 18. O regulador de tensão
utilizado foi o LM7805 e o seu circuito pode ser visualizado na figura 20.
Figura 33 - Fonte de 5V utilizando LM7805 para alimentação dos circuitos geradores de sinais.
Fonte: adaptado do datasheet do CI LM7805 da Texas.
4.1.6.2 TPS
O sinal do pedal do acelerador informa a porcentagem de abertura da válvula
borboleta, esse sinal é mensurado através do TPS e informa a ECM um valor de
tensão correspondente.
69
Para esse projeto será utilizado um potenciômetro linear de 1 kΩ para simular
o a abertura e fechamento da borboleta de aceleração gerando um valor de tensão
correspondente enviando-o ao Kit PIC 24 e ao Kit PIC 18 simultaneamente. O
resistor de 1 kΩ na saída do sinal serve para atenuar a corrente e proteção caso
ocorra eventual curto circuito no circuito de condicionamento. O esquema elétrico do
circuito do TPS pode ser visualizado na figura 22.
Figura 34 - Circuito gerador do sinal do TPS. Fonte: elaborado pela autora.
4.1.6.3 Temperatura
A temperatura do motor será simulada através de um circuito que utiliza o
LM35, um sensor que mede temperaturas de -55 ºC a 150 ºC com resolução de 10
mV/ºC. Ele será alimentado com 5 V e nesse caso trabalhará sempre com a
temperatura ambiente pois não haverá de fato um motor. O esquema elétrico pode
ser visualizado na figura 35.
1K1K
5V
Saída 5V MÁX.
70
Figura 35 - Circuito gerador do sinal de temperatura. Fonte: adaptado do datasheet do LM35 da Texas, 2016.
4.1.6.4 PIP
O PIP é um sinal utilizado para informar a posição do virabrequim e é uma
referência para a ECM que a partir desse sinal define o momento de injeção de
combustível e informa a velocidade do motor em RPM. Nos automóveis esse sinal
era, anteriormente, produzido pelo distribuidor de ignição com sensor Hall, hoje um
sensor de rotação com roda fônica montada concêntrica a árvore de manivelas é
responsável por converter o sincronismo mecânico do motor em sincronismo
eletrônico para a ECM.
O PIP simulado pelo gerador de sinais foi obtido por um circuito oscilador
utilizando o CI 555 em modo astável. Nesta configuração o circuito gera uma onda
quadrada com duty-cicle (ciclo de trabalho) de aproximadamente 50%, amplitude de
5 V e frequências que podem variar de 14 Hz a 12 kHz em função de um
potenciômetro de 10 kΩ. O esquema elétrico do circuito pode ser visualizado na
figura 21.
27.0
VOUT
LM35
5V
Saída 1.5V MÁX.
71
Figura 36 - Circuito gerador do sinal de PIP. Fonte: adaptado do datasheet do CI 555 da Texas, 2015 .
4.1.6.5 Resultado da montagem do gerador de sinais
A figura 36 mostra o gerador de sinais finalizado.
10k
5V
10K
Saída 5V
R
DC
Q
GN
DV
CC
TR TH
CV555
0.1uF
4.7uF
10K
100nF
1
2
4
5
6
7
8
3
72
Figura 37 – Gerador de sinais completo. TPS, Temperatura e PIP. Fonte: elaborado pela autora.
4.1.7 Projeto do condicionador de sinais para o Kit PIC 24 e Kit PIC 18
Para adaptar os sinais provenientes dos circuitos geradores aos padrões
aceitáveis dos microcontroladores PIC24 e PIC 18 foram construídos os circuitos
elétricos dos condicionadores para esses sinais.
O PIC 24 trabalha com sinais de tensão máxima de 3.6 V e o PIC 18 com
tensão máxima de 5 V, portanto para que ambos tenham o mesmo atraso no
recebimento do sinal todos foram condicionados.
4.1.7.1 Fonte de 6V
Após alguns testes com o LM358, o amplificador operacional que realiza o
condicionamento dos sinais analógicos, TPS e temperatura, verificou-se a
necessidade de alimentá-lo com uma tensão mínima de 6 V (output), para seu
correto funcionamento em configuração buffer (seguidor de tensão), para essa
finalidade foi construída uma fonte com saída variável regulada em 6V. O CI
utilizado foi o LM317 que nesse projeto possui uma tensão de entrada (input) de 12
73
V, e seguindo as recomendações do datasheet R1 é de 270 Ω e o trimpot R2 é de
3.3 kΩ ajustado em 1.15 kΩ. O esquema elétrico do circuito pode ser visualizado na
figura 37.
Figura 38 – Fonte de 6V utilizando o LM317 para alimentação do circuito condicionador dos
sinais analógicos. Fonte: extraído do datasheet do CI LM317 da Texas, 2015.
4.1.7.2 Condicionador do circuito do TPS
Foi utilizado para o condicionamento do sinal do TPS um amplificador
operacional, o CI LM 358 em configuração buffer. As saídas se dividem em 5 V máx.
e 3.4 V máx. A tensão de 3.4 V é conseguida através de um divisor resistivo que
atenua a tensão em aproximadamente 30%. O esquema elétrico do circuito pode ser
visualizado na figura 39.
74
Figura 39 - Circuito condicionador do sinal do TPS. Fonte: adaptado do circuito da ECU do Gol, Prof. Edson, 2014.
4.1.7.3 Condicionador do circuito da temperatura
Foi utilizado para o condicionamento do sinal da temperatura o amplificador
operacional LM 358 em configuração buffer. A saída é de 1.5 V máx. tanto para o
PIC 18 quanto para o PIC 24. O esquema elétrico do circuito pode ser visualizado na
figura 39.
270
LM358
TPS
2K2
4K7
5V MAX - PIC18
3,4V MÁX - PIC24
6V (Fonte-LM317)
75
Figura 40 - Circuito condicionador do sinal de temperatura. Fonte: adaptado do circuito da ECU do Gol, Prof. Edson, 2014.
4.1.7.4 Condicionador do circuito do PIP
Foram utilizados para o condicionamento do sinal do PIP dois comparadores
internos ao CI LM 339. Um divisor de tensão na entrada formado pelos resistores de
4.7 kΩ e 10 kΩ atenua a tensão de entrada em 30% que é encaminhada para as
entradas positivas de ambos comparadores, o diodo é responsável por grampear a
tensão do sinal de entrada em caso de surto de tensão, os dois resistores em série
de 10 kΩ dividem a tensão de alimentação (5 V) pela metade para as entradas
negativas de ambos comparadores criando um Schmitt trigger. As saídas dos
comparadores terão nível lógico 0 somente se nas entradas positivas existir uma
tensão maior do que 2.5 V. A saída do LM 339 é configurada como coletor aberto,
portanto para obter nível lógico 1 é necessário um resistor de pull-up. Além disso, foi
necessário incluir um divisor de tensão na saída do comparador B para obter uma
tensão máxima de 3.4 V compatível com o PIC 24 e a saída do comparador A
alimenta o PIC 18. O esquema elétrico do circuito pode ser visualizado na figura 38.
LM358
TEMPERATURA
1.5V MAX - PIC18 e PIC24
6V (Fonte LM317)
76
Figura 41 – Circuito condicionador do sinal do PIP. Fonte: adaptado do circuito da ECU para o
Gol, Prof. Edson, 2014.
4K7
1N4001
10k
PIP
10k
10k
LM339
LM339
100nF
1k
5V MÁX - PIC18
5V
5V
2K2
4K7
3,4V MÁX - PIC24
77
4.1.8 Resultado da montagem do condicionador de sinais
A figura 35 mostra o gerador de sinais finalizado.
Figura 42 –
4.1.9 Resultado do hardware completo
A figura 22 mostra o hardware completo finalizado contendo o Kit PIC24, o Kit
PIC 18, o gerador e o condicionador de sinais. Foram realizadas medições para
certificação dos valores desejados nas saídas dos condicionadores e nas fontes de
alimentação.
79
4.2 Modelagem do software de injeção eletrônica em FreeRTOS para o
Kit PIC 24
O FreeRTOS foi criado no ano 2000 por Richard Barry e hoje é mantido pela
empresa Real Time Engineers Ltd. sendo o RTOS de código aberto mais utilizado
no mundo, distribuído sob a licença GPL (General Public License – Licença Pública
Geral), que garante a liberdade de copiar, modificar e distribuir cópias sem que seja
necessário o pagamento de royalties para isso. É simples, pequeno e extremamente
portável, com uma vasta documentação oficial e não oficial, incluindo livros e vídeos.
Todo o código fonte do FreeRTOS é baseado no padrão MISRA C (Motor
Industry Software Reliability Association – Associação da Indústria Automobilística
de Confiabilidade de Software) escrito em linguagem C, com algumas exceções. A
MISRA, que é composto principalmente pelo setor automotivo, tem o objetivo de
promover melhores práticas para o desenvolvimento de produtos eletrônicos
automotivos.
No site do FreeRTOS, são disponibilizado projetos demonstrativos pré-
configurados para microcontroladores de mais de 30 arquiteturas diferentes.
Para esse projeto foi escolhida a versão 9.0.0 do FreeRTOS, em conjunto
como a interface de desenvolvimento MPLABX versão 3.20 e compilador XC16 na
versão 1.25.
Conforme recomenda a documentação do FreeRTOS, será utilizado o projeto
demo pré-configurado para PIC 24 disponível no diretório FreeRTOS\DEMO. Esse
projeto é específico para funcionar no Kit de desenvolvimento Explorer 16, porém,
após a obtenção dos arquivos fonte que formam o kernel do RTOS e dos caminhos
corretamente configurados, que são comuns a qualquer modelo de PIC 24, será
possível o desenvolvimento das aplicações de injeção eletrônica.
80
4.2.1 Estrutura básica do FreeRTOS
Uma vez que a aplicação de demonstração está construída e executando na
IDE MPLABX os arquivos se apresentam estruturados conforme mostra a figura 36.
Figura 44 – Estrutura de arquivos do FreeRTOS do projeto demo para PIC24FJ128GA110, carregados. Fonte: adaptado de MPLAB X IDE v.3.20.
81
4.2.2 Grupo de arquivos que formam o kernel
O diretório FreeRTOS_Source contém os três arquivos que são comuns a
cada microcontrolador; list.c, queue.c e tasks.c, o kernel está contido dentro destes
três arquivos, como mostra a figura 45.
Figura 45 – Arquivos do kernel que não necessitam de modificação. Fonte: extraído do ambiente de desenvolvimento do MPLAB X IDE v.3.20.
Dois arquivos opcionais; timers.c e croutine.c implementam as
funcionalidades de temporizador de software e co-rotina, respectivamente. A co-
rotina normalmente é utilizada em para trabalhar com microcontroladores de 8 bits e
memória RAM (Random Access Memory - Memória de Acesso Aleatório) muito
limitada.
O diretório FreeRTOS_Source\Portable contém os arquivos que são
específicos para um microcontrolador e ou compilador particular e diretório
FreeRTOS_Source contém os arquivos de cabeçalho do kernel: heap_1.c, list.c,
queue.c e tasks.c.
82
4.2.3 Configurando heap de memória
Como já mencionado, em uma configuração típica, o kernel pode ocupar de 4
kB a 9 kB de código (ROM/flash) e em torno de 200 bytes de dados (RAM), podendo
trabalhar de modo pre-emptive (de preferencia) ou colaborativo.
O kernel RTOS precisa de RAM cada vez que uma task, queue (fila),
temporizador de software, semáforo ou evento é criado. Sistemas de tempo real
embarcados podem ter diferentes requisitos de RAM e de sincronização de um para
outro, por isso um único algoritmo de alocação de memória só vai ser apropriado
para um subconjunto de aplicações. É no heap (empilhamento) que o kernel aloca
memória para armazenar os dados das tarefas, queues e semáforos usados na
aplicação.
A memória RAM pode ser automaticamente ou dinamicamente alocada no
FreeRTOS. O arquivo heap_1.c é a implementação mais simples, apenas aloca
memória de forma estática e não permite que a memória seja liberada após ser
alocada. É apropriada para esse projeto, pois as aplicações criarão todas as tarefas,
filas, semáforos, etc. necessárias quando o sistema for inicializado e, em seguida,
usarão todos esses objetos durante a vida útil do programa até que o aplicativo seja
desligado novamente, sem a exclusão de nenhum dos componentes criados.
A implementação heap_1.c é sempre determinista levando sempre a mesma
quantidade de tempo para executar e é adequada para uso em aplicativos que não
permitem alocação dinâmica de memória.
O tamanho total do heap é definido pelo configTOTAL_HEAP_SIZE que é
definido no arquivo de customização FreeRTOSConfig.h que será detalhado mais a
frente.
83
4.2.4 Grupo de arquivos que formam a aplicação de EFI
A figura 51 mostra os arquivos criados e modificados especificamente para
atender a aplicação de injeção eletrônica para o Kit PIC 24.
Figura 46 - Arquivos criados especificamente para a aplicação. Fonte: extraído do ambiente de desenvolvimento do MPLAB X IDE v.3.20.
A figura 51 mostra os arquivos criados e modificados especificamente para
atender a aplicação de injeção eletrônica para o Kit PIC 24.
84
4.2.5 A criação de tasks
O arquivo tasks.c provê as funções necessárias para a criação das tasks.
Antes de serem utilizadas as tasks devem ser deeclaradas e definidas.
Para o projeto foram criadas 4 tasks com funções específicas , vDefineTinj,
vADTPS, vADTemperatura e vDefineRotacao, o fluxograma das funções pode ser
visualizado na secção de APÊNDICES.
A aplicação em FreeRTOS será desenvolvida a partir de um conjunto de
tasks, onde cada task se comporta como um programa isolado em um loop infinito.
O arquivo KitPic24.c contem quatro tasks: define tempo de injeção (vDefineTinj), lê e
calcula o valor do TPS (vADTPS) lê o valor da temperatura (vADTemperatura)
calcula o valor da rotação (vDefineRPM), o arquivo KitPic24.h dá suporte a criação
das tasks e cria a estrutura utilizada pelas tasks vDefineTinj e vADTPS. A figura 47
mostra como é a sintaxe para a criação da task e seu loop no FreeRTOS.
Figura 47 – (a) Loop infinito de uma task e (b) criação da task. Fonte: adaptado de Using The FreeRTOS Real Time Kernel: A Pratical Guide PIC32, 2010.
No arquivo main.c
85
4.2.6 Utilizando as queues
A queue é um algoritmo que não pertence a nenhuma tarefa em específico e
são mecanismos primitivos utilizados por todas as comunicações e sincronizações
FreeRTOS e para a troca de mensagens entre as tarefas. As tarefas compartilham a
mesma queue tanto para ler como para escrever. Cada queue armazena um
conjunto finito de itens queue lenght (comprimento da fila) e cada item da queue
pode ter um tamanho fixo de bytes o item size. Ambos "queue lenght" e "item size"
são definidos no momento da criação da queue sendo que o FreeRTOS aloca
espaço no heap para as queues criadas.
Na figura 39 a queue é criada para permitir a comunicação entre a Task A e a
Task B. Ela permite no máximo 5 inteiros e quando é criada não contem nenhum
valor.
Figura 48 - Queue criada e sem elementos. Fonte: Using The FreeRTOS Real Time Kernel: A Pratical Guide PIC32, 2010.
Na figura 40 a Task A envia (send) o valor de uma variável local para a
queue. Como estava vazio no início o valor enviado é agora o seu único item.
Figura 49 - Envio de elemento para queue. Fonte: Using The FreeRTOS Real Time Kernel: A Pratical Guide PIC32, 2010.
86
Na figura 41 a Task A altera o valor da variável local antes de enviá-lo
novamente a queue. Após o envio ela conterá a cópia dos valores com o primeiro
valor escrito na frente na queue e o último valor subsequente. A queue agora possui
três espaços restantes.
Figura 50 - Envio de elemento para queue. Fonte: Using The FreeRTOS Real Time Kernel: A Pratical Guide PIC32, 2010.
Na figura 42 a Task B recebe (receive) da queue o valor dentro de uma
variável diferente. O valor recebido pela Task B é o primeiro valor enviado pela Task
A.
Figura 51 - Recebimento de elemento via queue. Fonte: Using The FreeRTOS Real Time Kernel: A Pratical Guide PIC32, 2010.
Na figura 43 a Task B remove o item recebido restando o segundo valor
enviado pela Task A, esse será o próximo valor que a Task B receberá se ler a
queue novamente. Restam agora quatro espaços disponíveis.
Figura 52 - Reposicionamento de elemento na queue. Fonte: Using The FreeRTOS Real Time Kernel: A Pratical Guide PIC32, 2010.
87
Antes das queues serem utilizadas devem ser criadas, mas sempre dentro
dos arquivos de aplicação. As queues recebem como retorno um QueueHandle
Para esse projeto foram criadas duas filas QueueHandle_t
xACCVALORQueue; QueueHandle_t e reutilizada uma fila da aplicação testada, a
xLCDQueue para envio dos três dados atualizados que aparecem no LCD, “Tinj”,
“RPM” e “T” (temperatura).
Duas variáveis globais precisaram ser criadas, pois ao acrescentar uma maior
quantidade de queue, notou-se em alguns testes uma considerável redução da
capacidade responsiva do bico de injeção, rpm_global e tinjglobal.
4.2.7 Semáforos
Além das queues os Semáforos Binários (Binarys Semaphores) são
mecanismos de sincronização disponibilizados pelo FreeRTOS.
Uma interrupção é capaz de deferir trabalho para uma tarefa através dos
semáforos podendo ser usado para acordar (desbloquear) uma tarefa quando
determinada interrupção acontecer, sincronizando a interrupção com a tarefa. Desta
forma, apenas o essencial é executado na interrupção, o restante do trabalho é
deferido para a tarefa correspondente ao tratamento da interrupção.
Um semáforo foi criado, xSemaphoreGiveFromISR (sem_INT0,
&task_woken) foi criada para sincronizar a task DefineTinj( ) com a interrupção
externa INT0/PIP, a variável task_woken é encarregada de sair da interrupção se
houver sucesso.na entrega do semáforo para a task.
Figura 53 -
88
A figura 53 ilustra o mecanismo de entrega give e tomada take de um
semáforo
Figura 54 -
4.2.8 Customização do FreeRTOS
O arquivo de pré-processamento FreeRTOSConfig.h é responsável pela
customização do FreeRTOS de qualquer nova aplicação e portanto não deve estar
localizado em um dos diretórios de código fonte do kernel e sim no diretório da
aplicação. No projeto existem defines do kernel e defines das APIs.
Os defines do kernel configurados para esse projeto podem ser visualizados
na tabela 3 e os defines das APIs na tabela 4.
89
Tabela 3 - Definição das funções dos pinos
#define configUSE_PREEMPTION
1 Para selecionar modo preemptive
#define configCPU_CLOCK_HZ
16000000 Hz
Mesmo clock da CPU, valor necessário para
configurar corretamente os periféricos do timer,
utilizado para gerar o tick interrupt para a troca
de contexto.
#define configTICK_RATE_HZ
100
(100Hz – 10ms)
Frequência de interrupção (tick), uma maior
freqüência de tick pode ser medido numa
resolução maior. No entanto, uma alta
freqüência de tick também significa que o kernel
RTOS usará mais tempo de CPU.
Mais de uma tarefa pode compartilhar a mesma
prioridade.
#define configMAX_PRIORITIES
4
O número de prioridades disponíveis para as
tarefas do aplicativo. Qualquer número de
tarefas pode compartilhar a mesma prioridade.
Cada prioridade disponível consome RAM no
kernel RTOS, portanto, esse valor não deve ser
superior ao realmente exigido pelo aplicativo.
#define configMINIMAL_STACK_SIZE
115
O tamanho da pilha usada pela tarefa ociosa.
Não deve ser menor do que 115
#define configTOTAL_HEAP_SIZE
((size_t) 5120 )
A quantidade total de RAM disponível no heap
do FreeRTOS e o aplicativo faz uso de um dos
esquemas de alocação de memória (heaps)
fornecidos no download do código fonte do
FreeRTOS.
#define configMAX_TASK_NAME_LEN
14
O comprimento máximo permitido do nome
descritivo dado a uma tarefa quando é criada. O
comprimento é especificado em número de
caracteres incluindo o byte de terminação
NULL.
#define configUSE_16_BIT_TICKS Como 1 faz com que TickType_t a variável
90
0 que configura o tick seja definido tipo
unsigned 16 bits. Como 0 faz com que
TickType_t seja definido tipo unsigned 32
bits.
Fonte :
#define configUSE_PREEMPTION
1 Para selecionar modo preemptive
#define configCPU_CLOCK_HZ
16000000 Hz
Mesmo clock da CPU, valor necessário para
configurar corretamente os periféricos do timer,
utilizado para gerar o tick interrupt para a troca
de contexto.
#define configTICK_RATE_HZ
100
(100Hz – 10ms)
Frequência de interrupção (tick), uma maior
freqüência de tick pode ser medido numa
resolução maior. No entanto, uma alta
freqüência de tick também significa que o kernel
RTOS usará mais tempo de CPU.
Mais de uma tarefa pode compartilhar a mesma
prioridade.
4.2.9 Configuração dos periféricos
O arquivo partes.c prove o setup dos registradores configurados no uC de
interrupção externa INT0 (PIP), interrupção de Timer2
91
5 GRAVAÇÃO FINAL DOS SOFTWARES E ANÁLISE DE
RESULTADOS
Foram utilizadas duas formas diferentes para a gravação dos PICs. O PIC 24
utiliza gravação com protocolo ICSP e o PIC 18 utilizou um bootloader.
Algumas pequenas modificações foram realizadas no firmware original do PIC
18, alterando apenas os LCD, para
93
A figura 54 mostra o resultado do pulso de injeção (laranja) sendo gerado de
forma incorreta com um grande atraso entre o sinal do PIP e o pulso. Isso ocorreu
quando a task DefineTinj ( ) possuía uma prioridade de 3.
Figura 56 - Pulso de PIP (azul de 5 V ) injeção (laranja de 3 V) gerado a 650 RPM pelo kit PIC 18. Fonte: elaborado pela autora.
Após a alteração da prioridade da mesma tarefa para 4 o pulso se comportou
de forma esperada. Não foram observadas defasagens significativas na amostragem
dos dados no display. A figura 55 mostra os pulsos de injeção sincronizados com os
de PIP.
A base temporal de calculo do ACC é 100ms criada pela vTaskDelayUntil( )
94
Figura 57 - Pulso de injeção gerado a 650 RPM pelo kit PIC 24. Fonte: elaborado pela autora.
As próximas figuras ilustram as comparações realizadas entre os dois kits em
três faixas de valores; 650 RPM, 3000 RPM e 6000 RPM, algumas mudanças de
escala foram necessárias para melhor visualização.
Como o osciloscópio utilizado possui dois canais os pulsos foram medidos
com relação ao seu próprio PIP.
A figura 57 mostra o pulso de injeção criado pelo kit PIC 18 a 650 RPM que
pode ser comparado com a figura 55 elaborada acima.
Figura 58 - Pulso de injeção gerado a 650 RPM pelo kit PIC 18. Fonte: elaborado pela autora.
95
As figuras 58 e 59 ilustram ambos os pulsos gerados a 3000 RPM.
Figura 59 - Pulso de injeção gerado a 3000 RPM pelo kit PIC 18. Fonte: elaborado pela autora.
Figura 60 - Pulso de injeção gerado a 3000 RPM pelo kit PIC 24. Fonte: elaborado pela autora.
As figuras 60 e 61 mostram os pulsos de injeção criados a 6000 RPM, a partir
dessa faixa o RTOS do PIC 24 apresenta travamento e o reset do software por
alguns segundos. A figura 61 ilustra exatamente o momento do travamento do
software quando o bico permanece ligado por um tempo bem maior.
96
Figura 61 - Pulso de injeção gerado a 6000 RPM pelo kit PIC 24. Fonte: elaborado pela autora.
Figura 62 - Pulso de injeção gerado a 6000 RPM pelo kit PIC 24. Fonte: elaborado pela autora.
97
Figura 63 – Retomada do pulso de injeção gerado a 6000 RPM após reset pelo kit PIC 24.
Fonte: elaborado pela autora.
Retomando um rotação mais baixa as figuras 62 e 64 mostram o média de
tempo de pulso de injeção já incrementado pelo cálculo do ACC. No kit PIC 18 o
firmware que realiza o cálculo no PIC 24 o cálculo é realizado no pela Task
Figura 64 – Incremento de pulso via bomba de aceleração (TPS) do kit PIC 18. Fonte: elaborado pela autora.
98
Figura 65 - Incremento de pulso de injeção (laranja) via bomba de aceleração (TPS) do kit PIC 24. Fonte: elaborado pela autora.
O pulso de injeção mínimo configurado para ambos os softwares foi de 2 ms.
Isso se manteve
Figura 66
99
Figura 67 -
Foi medido o tempo decorrido entre a borda de descida do PIP e o
acionamento do bico injetor. As figuras
Figura 68 -
100
Figura 69 – Defasagem entre PIP e pulso de injeção no kit PIC 24. Fonte: elaborado pela autora.
6 CONCLUSÃO
Muitas dificuldades permearam a UMA DAS MEDIDAS para diminuir o erro
nos projetos é realizar comparações entre os sistemas operacionais utilizados
através de estudos encomendados, empresas como a Australiana Dedicated
Systems que atua desde 2003 realizando relatórios de desempenho de softwares, a
má aplicação ou mesmo a explosão da sonda petrolífera Deep Horizon no Golfo do
México em 2010, que causou um dos maiores desastres naturais ao desacoplar a
sonda O estudo demonstrou que a utilização do RTOS para controle da injeção
eletrônica pode ser viável mas que necessita de maiores testes entretanto podem ter
boa qualidade par sistemas de tempo real soft por enquanto.
No decorrer do projeto foi lançado o chibios para PIC 24 o que reforça ainda
mais essa opção pelo tema
A frequência da interrupção do tick RTOS.
A interrupção do carrapato é usada para medir o tempo. Portanto, uma maior
freqüência de tiquetaque significa que o tempo pode ser medido para uma resolução
maior. No entanto, uma alta freqüência de tick também significa que o kernel RTOS
usará mais tempo de CPU para ser menos eficiente. Os aplicativos de demonstração
101
RTOS todos usam uma taxa de tick de 1000Hz. Isso é usado para testar o kernel
RTOS e é maior do que seria normalmente necessário.O programador RTOS irá
compartilhar o tempo do processador entre tarefas da mesma prioridade alternando
entre as tarefas durante cada RTOS tick. Uma frequência elevada de frequência de
tiquetambém terá também o efeito de reduzir a "fatia de tempo" dada a cada tarefa.
Usar um tipo de 16 bits melhorará muito o desempenho em arquiteturas de 8
e 16 bits, mas limitará o período de tempo máximo especificável para 65535 'ticks'.
Portanto, assumindo uma freqüência de tick de 250Hz, o tempo máximo que uma
tarefa pode atrasar ou bloquear quando um contador de 16 bits é usado é 262
segundos, em comparação com 17179869 segundos quando se usa um contador de
32 bits.
7 PROPOSTAS FUTURAS
Utilização de APIs diferentes para a construção da mesma aplicação.
Inclusão de novas funcionalidades ao harware e software, inclusive a
temperatura como parâmetro para cálculo de débito de combustível.
Adaptação do hardware para recebimento dos sinais do veículo Gol ou outro
veículo disponibilizado pela FATEC Santo André.
Implantação de “sondas de software” para estudos mais aprofundados acerca
de
Utilização de outros RTOSs
Construção de aplicações diversas, para outros módulos eletrônicos
existentes no veículo e acionamento de outros atuadores.
102
8 REFERÊNCIAS
AROCA, R. V. Análise de Sistemas Operacionais de Tempo Real para Aplicações de
Robótica e Automação. Monografia (Dissertação de Mestrado) - Escola de
Engenharia de São Carlos, 2008.
BARRY, Richard. Using The FreeRTOS Real Time Kernel: A Pratical Guide, PIC32
Edition. London: Real Time Engineers Ltd. 2010. 175p. (ISBN: 1446171086)
BOSH. Technical Instruction Gasoline Fuel-Injection System L-Jetronic. 1995.
Alemanha. Disponível em: <http://www.cardiagnostics.be/-
now/Educational_sites_bestanden/BOSCH%20L-Jetronic%20Injection%20Manual.pdf>
Acesso em: 03 mai. 2016.
BRUNETTI, Franco. Motores de Combustão Interna – Vol.1. São Paulo: Blucher
2012. 554p. (ISBN: 9788521207085)
MATA, V. M. J. da; MOSCARDINI, D. Unidade de Gerenciamento Eletrônico de
motor de ciclo Otto Volkswagen 2.0L: Plataforma de desenvolvimento III. Monografia
(Trabalho de Conclusão de Curso) – FATEC Santo André, 2014.
103
MICROCHIP. User’s Guide Explorer 16 Development Board, 2005-2014. Disponível
em: <http://ww1.microchip.com/downloads/en/DeviceDoc/51589a.pdf> Acesso em:
14 fev. 2016.
MICROCHIP. Section 6 Oscillator. PIC24F Family Reference Manual, 2009.
Disponível em: <http://ww1.microchip.com/downloads/en/DeviceDoc/39700c.pdf>
Acesso em: 20 fev. 2016.
MICROCHIP. Section 8 Interrupts. Family Reference Manual, 2006. Disponível em: <
http://ww1.microchip.com/downloads/en/DeviceDoc/39707a.pdf> Acesso em: 13 jun.
2016.
MICROCHIP. Section 14 Timers. Family Reference Manual, 2006. Disponível em: <
http://ww1.microchip.com/downloads/en/DeviceDoc/39707a.pdf> Acesso em: 10 ago.
2016.
MICROCHIP. Section 17 10-Bit A/D Converter. PIC24F Family Reference Manual,
2006. Disponível em: <http://ww1.microchip.com/downloads/en/DeviceDoc/39705b.pdf>
cesso em: 20 fev. 2016.
PORTAL FREERTOS. FreeRTOS Real Time Kernel v.9.0.0. Disponível em:
<https://sourceforge.net/projects/freertos/?source=typ_redirect>. Acesso em: 20 mai.
2016.
PRADO, Sergio Prado. FREERTOS. Treinamento, 2015, São Paulo, 321p.
MICROCHIP. Datasheet PIC24FJ256GB110 Family, 2009. Disponível em:<
<http://ww1.microchip.com/downloads/en/DeviceDoc/39897c.pdf> Acesso em: 18
jan. 2016.
<http://rusefi.com/wiki/index.php?title=Main_Page > Acesso em 11 dez. 2016.
Notas de aula do professor Edson Caoru Kitani