PROIECT 2012
Proiectele realizate in cadrul Laboratorului de SMP 2012, Fiecare echipa are de completat in pagina WIKI corespunzatoare proiectului in cadrul tabelului de mai jos, in functie de grupa de care apartine La o grupa se poate implementa o singura data un proiect.
Lista cu proiectele disponibile o gasiti AICI.
Punctaj Proiect
-
2p Pagina Wiki in format HTML cu capitolele create - poze(diferite stadii ale proiectului) + schema hardware + listing software (microcontroller + OpenWatcom la Z3)
-
5p Functionalitate proiect - punctaj in functie de cerintele cerute/realizate
-
1p Calitatea proiectului - cat de organizati ati fost in realizarea acestuia, cod format frumos, optimizari etc...
-
2p Nota individuala - participarea voastra in proiect, raspunsul vostru la intrebarile laborantului la presentarea proiectului
Cerinte general valabile:
- Toate proiectele se vor integra software si/sau hardware cu placa EV/Z3. Pentru integrarea hardware se va folosi portul serial al placii EV/Z3
- Logica software de baza se va regasi pe placa EV/Z3 si va fi realizata în C + inline assembly folosind template-ul OpenWatcom de la laborator
- Pagina de wiki trebuie sa contina o descriere a ce a realizat fiecare student in cadrul proiectului
- Daca nu puneti pe site alta schema de proiectare hardware se va folosi cea cu PIC16F628A pusa la dispozitie
- Wiki-ul trebuie updat ca sa vad stadii intermediare ale proiectului
Elemente de electronica
-
Pentru a vedea/comanda un pret estimativ a componentelor va propun www.conexelectronic.ro . Gasiti si alte magazine pe Maica Domnului.
-
Letconul ar trebui sa aiba cam 40W , nu mai mult de 60 oricum , iar fludorul la 1mm-1.5mm. Sa aveti si un voltmetru cu voi.
-
Va recomand inainte sa alegeti proiectul sa cititi cateva elemente de electronica de AICI.
2012_332AB_P6
Wiki error: Section name cannot be repeated ' '
Table of contents
1. Controlul inteligent al iluminarii
[edit]
1.2.1. - placa cu MSP430 - 50*100 placa test cu fludor.
1.2.2. - led 3.3V cu posibilitatea setare intensitate variabila.
1.2.3. - placa Z3 ii da prin seriala placii intensitatea curenta
1.2.6. Soft: utilizatorul controleaza intensitaea -/+ -- seteaza intensitatea default la intuneric.
1.3. III. User Flow
1.5. V. Hardware Design
1.6. VI. Software Design
1.7. VIII. Download
1.8. IX. Status
Controlul inteligent al iluminarii
[edit]
I. Project Description
Proiectul reprezinta simularea unui sistem de iluminare inteligenta (crepusculara). Acesta controleaza iesirea (intensitatea LED-ului) in functie de intrare (o fotorezistenta). Iesirea este invers proportionala cu intrarea. Placuta este controlata de un microcontroller atmega 328.
II. Project Requirements
Din motive tehnice, am decis sa folosim:
- microcontroller atmega 328
- led 5 v
- placa EVZ3 transmmite comanda pe serial
- placa poate functiona automat sau manual, cu ajutorul evz3.
- placa cu MSP430 - 50*100 placa test cu fludor.
- led 3.3V cu posibilitatea setare intensitate variabila.
- placa Z3 ii da prin seriala placii intensitatea curenta
- senszor lumina - detectie intuneric c-> mesaj catre Z3 --- daca utilizatorul a setat in prealabil sa porneasca lumina noaptea placa Z3 va controla intensitatea.
Soft: utilizatorul controleaza intensitaea -/+ -- seteaza intensitatea default la intuneric.
III. User Flow
Utilizatorul are la disozitie 3 taste pe EVZ3: tasta 1, tasta 2 si tasta 3. Tasta 1 reprezinta modul "auto". Tasta 2 decrementeaza intensitatea LED-ului iar tasta 3 o incrementeaza.
IV. Required components
1 microcontroller atmega 328
1 LED rosu
1 fotorezistenta
1 mufa DB-9 tata
1 mufa USB B mama
1 tranzistor NPN
1 oscilator 16 MHz
2 condensatoare
4 rezistente
1 placa de test
fire de cupru izolate
1 soclu 28 pini
V. Hardware Design
\Ca si nota distinctiva, pentru transmiterea seriala folosim un tranzistor NPN care este saturat cand EVZ3 transmite 12 V si se blocheaza cand EVZ3 transmite -12. pinul de RX al microcontrollerului este legat la colector.
Alimentarea se face printr usb (5 volti, stabilizat).
Fotorezistenta impreuna cu inca o rezistenta functioneaza ca si un divizor de tensiune.
Placa este echipata si cu un circuit de clock pentru microcontroller, format dintr-un oscilator si 2 condensatori.
VI. Software Design
Microcontrollerul citeste o valoare analog cu CAN-ul intern pe 10 biti, o scaleaza la 8 biti si trimite invers comanda PWM de (255-val_citita). In acelasi timp, asculta pe serial daca se transmite ceva. Microcontrollerul stie sa recunoasca, de pe serial cuvintele '1', '2' si '3', fiecare reprezentand modurile descrise mai sus.
La pornire, microcontrollerul este in starea 1.
EVZ3 asteapta citirea tastelor si trimite pe serial, in functie de tasta citita, cuvantul corespunzator.
Soft EVZ3:
/****************************************************************************
*
* Laborator SMP - 80386EX Z3/EV Real Mode
*
* Portions Copyright (c) 2010 Mihai Matei. All Rights Reserved.
*
* ========================================================================
*
* This file contains Original Code and/or Modifications of Original
* Code as defined in and that are subject to the Apache License,
* Version 2.0 (the "License"). You may not use this file
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
* provided with the Original Code and Modifications, and is also
* available at http://www.apache.org/licenses/LICENSE-2.0
/>*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
* NON-INFRINGEMENT. Please see the License for the specific language
* governing rights and limitations under the License.
*
* ========================================================================
*
* Description: Entry point for SMP Z3/EV Project
*
****************************************************************************/
#include "platform_io.h"
const char *welcome = " smart light ";
const char *serialStart = "Please send data";
static SerialConfig serialConf;
int main()
{
int key = 0;
char light='1';
/* display our welcome message */
kIo.DisplayString(welcome);
/* Serial Initialization */
serialConf.baudRate = b9600;
serialConf.parity = none;
serialConf.stopBits = one;
serialConf.wordLength = eight;
/* In order to check what EV/Z3 board is echoing on the serial port
* open Hyperterminal, create a new connection using the above parameters,
* Flow control: Hardware and Settings/Emulation: ANSI, connect and type some chars in it */
kIo.SerialInit(&serialConf);
/* wait for a key to be pressed */
kIo.SerialWrite(COM1, (unsigned char*)&light, 1);//transmite initial light='1', pentru modul auto (desi implicit pe placuta)
kIo.Wait(200);
while(1){
key = kIo.ReadKey();
switch(key){
case 10://tasta 1 - auto
{
light='1';
kIo.SerialWrite(COM1, (unsigned char*)&light, 1);
kIo.Wait(200);
}
break;
case 1://tasta 2 - decrementare
{
light='2';
kIo.SerialWrite(COM1, (unsigned char*)&light, 1);
kIo.Wait(200);
}
break;
case 11://tasta 3 - incrementare
{
light='3';
kIo.SerialWrite(COM1, (unsigned char*)&light, 1);
kIo.Wait(200);
}
break;
}
}
return 0;
}
Soft atmega 328:
//Proiect SMP, Curatu Rares, Olteanu Gheorghe Daniel, 332AB
#include "Arduino.h"
void setup();
void loop();
const int analogInPin = A3; //caderea de tensiune de pe fotorezistor este masurata pe pinul A3
const int analogOutPin = 3; //rezistenta este controlata in PWM de pe pinul digital 3
int sensorValue = 0; // value read from the pot
int outputValue = 0; // value output to the PWM (analog out)
int incomingByte = 0;
int mod=49;
int valoare=0;
void setup() {
// initialize serial communications at 9600 bps:
Serial.begin(9600);
}
void loop() {
//valoare citita de la senzorul pe 10 biti
sensorValue = analogRead(analogInPin);
//scalare a valorii pe 10 biti la 8 biti
outputValue = map(sensorValue, 0, 1023, 0, 255);
//citire pentru modul 1 (auto), valoarea seriala caracterul '1', adica in ASCII 49. In plus, modul initial este cel automat si se realizeaza si citirea initiala a valorilor.
if(mod==49)
{
valoare=255-outputValue;
}
if (Serial.available() > 0)
{
incomingByte = Serial.read();
mod=incomingByte;
if(mod==50&&valoare>=0) //modul 2 (descrestere manuala), are valoarea pe serial caracterul '2', adica valoarea ASCII 50
{
valoare=valoare-50;
}
if(mod==51&&valoare<=255) //modul 3 (crestere manuala), are valoarea pe serial caracterul '2', adica valoarea ASCII 50
{
valoare=valoare+50;
}
Serial.print("Modificare mod: ");
Serial.println(mod);
}
//verificare ca iesirea sa fie in limitele 0-255:
if(valoare<1)
{
valoare=0;
}
if(valoare>254)
{
valoare=255;
}
analogWrite(analogOutPin, valoare);
Serial.print("sensor = " );
Serial.print(sensorValue);
Serial.print("\t output = ");
Serial.print(valoare);
Serial.print("\t mod=");
Serial.println(mod);
delay(10);
}
Microcontrollerul transmite si date pe serial, pentru debugging.
VII. Results
Proiectul este in totalitate functional, lucreaza conform descrierii.
VIII. Download
After you have presented your project at the laboratory (week 13-14) you will add all your sources here. Any hardware simulation used, code archive and so on.
IX. Status
You will have to update this every 2 weeks to include details of what you have done on your project. E.g.: aquired componets, made board, written code for EV/Z3
X. Personal Contribution
Rares Curatu: Software microcontroller, Software placa EVZ3, realizare hardware
Gheorghe Olteanu: Software microcontroller, schema Proteus, realizare hardware