Digitale Voice Recorder Digitale Voice Recorder Team 1

  • Slides: 81
Download presentation
Digitale Voice Recorder

Digitale Voice Recorder

Digitale Voice Recorder Team 1: De Hardware

Digitale Voice Recorder Team 1: De Hardware

Team 1 Ellen Vandermeeren Gerry Branders Timmy Knevels Xavier Croissiaux

Team 1 Ellen Vandermeeren Gerry Branders Timmy Knevels Xavier Croissiaux

Opdracht: • Analoge Interface • Transducers • Power Supply

Opdracht: • Analoge Interface • Transducers • Power Supply

Specifieke opdrachten: • • • Mikrofoonversterker ADC Convertor DAC Convertor Luidsprekerversterker Luidspreker Voeding Overige

Specifieke opdrachten: • • • Mikrofoonversterker ADC Convertor DAC Convertor Luidsprekerversterker Luidspreker Voeding Overige Onderdelen Behuizing Koppeling Schema’s Print-layout …

Mikrofoonversterker

Mikrofoonversterker

Ontwerp • Elektuur 1993: Juli/Augustus-nummer

Ontwerp • Elektuur 1993: Juli/Augustus-nummer

Eigenschappen • Geschikt voor verschillende mikrofoonimpedanties • Keuze tussen spanningsversterking van 10 of 15

Eigenschappen • Geschikt voor verschillende mikrofoonimpedanties • Keuze tussen spanningsversterking van 10 of 15 keer (20 of 23, 5 d. B) • Heel wat tegenkoppel door 2 direkt gekoppelde transistortrapjes • Zeer weinig ruis

Eigenschappen • Uitgangsimpedantie = 70 Ohm bij versterkingsfactor van 15 • Ingangsimpedantie = 30

Eigenschappen • Uitgangsimpedantie = 70 Ohm bij versterkingsfactor van 15 • Ingangsimpedantie = 30 k. Ohm • Laag stroomverbruik: 2, 5 m. A bij 9 V • THD +N (vervorming en ruis): 0, 045 % (Bandbreedte 22 k. Hz, uitgangssignaal 15 m. V) – Ruis: -65 d. B – Harmonische vervorming: -92 d. B

Overige

Overige

Luidsprekerversterker

Luidsprekerversterker

Ontwerp • Elektuur 1985: Juli/Augustus-nummer

Ontwerp • Elektuur 1985: Juli/Augustus-nummer

Eigenschappen • Voor luidspreker van 4 Ohm: Voeding: 3 V 9 V Ruststroom :

Eigenschappen • Voor luidspreker van 4 Ohm: Voeding: 3 V 9 V Ruststroom : 2, 5 m. A 7, 5 m. A Volle uitsturing: 80 m. A 270 ma Afgegeven vermogen: 100 m. W 1000 m. W

Werking • C 2 en C 6 ontkoppelen voeding • C 7 houdt gelijkspanning

Werking • C 2 en C 6 ontkoppelen voeding • C 7 houdt gelijkspanning weg van de luidspreker • C 3 en C 5 vormen voor audiosignalen laagohmig pad naar massa • Signaal op ingang van de versterker via P 1 en C 4

Werking • R 4 en C 8 onderdrukken oscillatieneigingen • R 1 en R

Werking • R 4 en C 8 onderdrukken oscillatieneigingen • R 1 en R 3 bepalen de versterkingsfactor • C 1, parallel over R 1, zorgt dat boven 20 k. Hz minder wordt versterkt

Overige

Overige

De PCF 8591 • • • Analoge ingangen Hardware adressen Negatieve voeding Positieve voeding

De PCF 8591 • • • Analoge ingangen Hardware adressen Negatieve voeding Positieve voeding Analoge uitgang Referentiespanning Analoge massa Externe switch Oscilator in/uitgang I²C-bussen

D/A conversie • 8 datalijnen • 256 uitgangen • Uitgansspanning geregeld met weerstand •

D/A conversie • 8 datalijnen • 256 uitgangen • Uitgansspanning geregeld met weerstand • Referentiespanning

Spanningskarakteristiek

Spanningskarakteristiek

A/D conversie • successive approximation conversie • on-chip D/A converter + high-gain comparator •

A/D conversie • successive approximation conversie • on-chip D/A converter + high-gain comparator • getriggerd op de dalende flank

Spanningskarakteristiek

Spanningskarakteristiek

Limietwaarden

Limietwaarden

Aansluitingsinformatie De analoge ingangen De analoge uitgang De referentiespanning Analoge massa De oscillator switch

Aansluitingsinformatie De analoge ingangen De analoge uitgang De referentiespanning Analoge massa De oscillator switch De oscillator De adresbus De i²c bus

De schakelaars en ledjes Opname/Weergave schakelaar Stopschakelaar s Q r Q s Q Groene

De schakelaars en ledjes Opname/Weergave schakelaar Stopschakelaar s Q r Q s Q Groene led Rode led

Luidspreker • Platte inbouwluidspreker die zowel geschikt is voor spraakoverdracht als voor melders van

Luidspreker • Platte inbouwluidspreker die zowel geschikt is voor spraakoverdracht als voor melders van oproep- en alarmtonen. • Technische spec. : Aluminium membraan Afm. korf-Æ 30 mm, hoogte 5 mm Imped. 8 W Nom. belasting max. 800 m. A Eigenfrequ. 1, 3 k. Hz Overdrachtsber. 8 k. Hz Geluidsniv. 70 d. B

 • De impedantie van de versterker is 4 Ώ en de impedantie van

• De impedantie van de versterker is 4 Ώ en de impedantie van de luidspreker is 8 Ώ. • Normaal : geen probleem • Anders : 8 Ώ parallel over de weerstand van de luidspreker

De microfoon • • • Goedkoop Schokbestendig Licht Grote gevoeligheid Zeer betrouwbaar

De microfoon • • • Goedkoop Schokbestendig Licht Grote gevoeligheid Zeer betrouwbaar

De voeding

De voeding

Eigenschappen • • • Compactheid Bedrijfszekerheid Kostprijs Flexibiliteit Reset-signaal Beperkte uitgangsstroom (max. 0, 8

Eigenschappen • • • Compactheid Bedrijfszekerheid Kostprijs Flexibiliteit Reset-signaal Beperkte uitgangsstroom (max. 0, 8 A)

I²C Systeem • In rust staan beide lijnen hoog. • De uitgangstransistor en zijn

I²C Systeem • In rust staan beide lijnen hoog. • De uitgangstransistor en zijn gespert. • Zodra geleiding gaat de lijn laag.

I²C • 2 lijnen SDA seriële data lijn • SCL seriële klok lijn •

I²C • 2 lijnen SDA seriële data lijn • SCL seriële klok lijn • meerdere IC’s op 2 lijnen • Seriële transmissie

I²C • Bij D/A conversie wordt er een databyte meegestuurd.

I²C • Bij D/A conversie wordt er een databyte meegestuurd.

I²C • Bij A/D conversie alleen adres + databyte

I²C • Bij A/D conversie alleen adres + databyte

I²C • Start conditie • Stop conditie • 9 de puls Acknowledge

I²C • Start conditie • Stop conditie • 9 de puls Acknowledge

Digitale Voice Recorder Team 2: Het geheugen en de display

Digitale Voice Recorder Team 2: Het geheugen en de display

Team 2 Koen Vanhees Kristof Marneff Pieter Ketelslegers

Team 2 Koen Vanhees Kristof Marneff Pieter Ketelslegers

Ons team kreeg de opdracht het geheugen en de display te ontwerpen. Concreet houdt

Ons team kreeg de opdracht het geheugen en de display te ontwerpen. Concreet houdt dit in: • Bepalen van de geheugencapaciteit • Bepalen van het soort geheugen • Ontwerpen van de interface • Koppeling met andere schema’s

Keuze van de Microprocessor Na overleg met andere groepen hebben we uiteindelijk gekozen voor

Keuze van de Microprocessor Na overleg met andere groepen hebben we uiteindelijk gekozen voor de ATMEGA 128. Deze component vonden we echter niet terug in Eagle daarom hebben we geopteerd voor de ATMEGA 103.

Aansluiten van de BCD-naar-7 segment-decoders We kozen voor 1 minuut speeltijd → twee 7

Aansluiten van de BCD-naar-7 segment-decoders We kozen voor 1 minuut speeltijd → twee 7 segment displays zijn voldoende om tijd weer te geven → elk 7 poorten van de µP nodig! Oplossingen: • 14 (7 * 2) herleiden naar 9 (7 + 2) door tweemaal een transistor bij te plaatsen → Deze worden actief gemaakt vanuit de µP en kiezen dus de 7 -segment displays. Gebeurt dit snel dan is het door de traagheid van het menselijk oog onzichtbaar. • BCD-code i. p. v. 7 -segment-code → 8 (2 * 4) pennen nodig. Dit wordt onze uiteindelijke keuze en we maken gebruik van een BCDnaar-7 segment-decoder, de 74 LS 48.

Functietabel 74 LS 48 LT, RBI en BI/RBO moeten hoog gehouden worden opdat het

Functietabel 74 LS 48 LT, RBI en BI/RBO moeten hoog gehouden worden opdat het IC correct decodeert.

De ingangen verbinden we met poort E van de µP

De ingangen verbinden we met poort E van de µP

Aansluiting van de 7 segment displays Uitgangen van de BCD-naar-7 segment-decoder niet zomaar aansluiten

Aansluiting van de 7 segment displays Uitgangen van de BCD-naar-7 segment-decoder niet zomaar aansluiten op de displays → voorschakelweerstanden van 330Ω.

Aansluiten LED’s voor RECORD/PLAY We kiezen voor monostabiele schakelaars. Leds moeten branden totdat toestand

Aansluiten LED’s voor RECORD/PLAY We kiezen voor monostabiele schakelaars. Leds moeten branden totdat toestand verandert → systeem met 2 flipflops Play: waarde wordt vastgehouden → Led blijft branden. Uitgang verbonden met K-ingang → Led voor Record dooft. Record: play Led dooft en Record Led gaat branden.

De µP moet de toestand van de knoppen ook kennen → uitgang FF verbinden

De µP moet de toestand van de knoppen ook kennen → uitgang FF verbinden met PB 6 en PB 7 van µP

Aansluiten van de Stop-knop De stop-knop is dominant→aansluiten op Clear ingang van de FF.

Aansluiten van de Stop-knop De stop-knop is dominant→aansluiten op Clear ingang van de FF. Deze is Laag actief→inverteren. De µP vraagt de toestand van de Stop-knop op via PD 2.

Eerste keuze van het geheugen. Formule voor geheugencapaciteit: samplefrequentie * aantal bits/sample * opnametijd

Eerste keuze van het geheugen. Formule voor geheugencapaciteit: samplefrequentie * aantal bits/sample * opnametijd in seconden Dit geeft: 8000 Hz * 8 * 60 = 384000 bit of 4 Mbit geheugen. Eerst kozen we SRAM → geheugens meestal te klein → DRAM: 41 C 8512. Dit IC werkt met rijen en kolommen → constante refresh. Oplossing: Timer IC (NE 555). Schakeling werkt als astabiele multivibrator.

Afhankelijk van het feit of er geschreven werd of niet, konden we de timing

Afhankelijk van het feit of er geschreven werd of niet, konden we de timing regelen. Hoe dit moet is duidelijk in deze tabel: Eerst RAS aanbieden daarna CAS → lezen of schrijven afhankelijk van het WE of OE signaal. Refresh = Hidden Refresh. Gebeurt via RAS terwijl CAS laag blijft. RAS → zelfde signaal als normale operatie. CAS → massa. Er wordt dus niet geschreven → er moet geen signaal binnen bij CAS.

We stellen hiervan een waarheidstabel op met A het CAS-signaal en B de toestand

We stellen hiervan een waarheidstabel op met A het CAS-signaal en B de toestand van WE. X is de juiste toestand van het CAS-signaal. B A X 0 0 0 1 1 0 Als WE laag is, dus als er geschreven wordt moet het CAS-signaal dat overkomt van de timer gewoon overnemen. Is WE hoog, dus er wordt niets gedaan, dan moet het uiteindelijke CAS-signaal laag worden. Dit maken we met een invertor gecombineerd met een AND-poort.

Overschakelen naar EEPROM Uiteindelijk zijn we overgestapt naar een ander geheugen. Dit om de

Overschakelen naar EEPROM Uiteindelijk zijn we overgestapt naar een ander geheugen. Dit om de volgende redenen: - Oplossing van de Refresh leek ons niet ideaal. - Het was moeilijk voor Team 3, dat instond voor de programmering van de µP, om de aangeboden rij-en kolomadressen te programmeren Een alternatieve en simpelere oplossing was een EEPROM, de 28 C 040 van Atmel

19 adresingangen, breedte bitstroom: 8 bit → 2 ^ 19 * 8 = 4

19 adresingangen, breedte bitstroom: 8 bit → 2 ^ 19 * 8 = 4 MBit Verder ook Chip Enable, Output Enable en Write Enable Eerst voeding en massa aansluiten. Daarna eerste 8 adreslijnen aansluiten met poort A.

Van poort A → 8 adresingangen, maar ook naar 8 pennen van I/O van

Van poort A → 8 adresingangen, maar ook naar 8 pennen van I/O van het geheugen (datastroom)

Dit is uiteraard fout → lees/schrijf-signaal en adresselectie mag men niet door mekaar gebruiken.

Dit is uiteraard fout → lees/schrijf-signaal en adresselectie mag men niet door mekaar gebruiken. Oplossing: 74373 Latch Enable is laag actief → massa Klok → ALE (Adress Latch Enable) aparte functie bij ATMEGA 103 → ons schema bij ATMEGA 128 → geïntegreerd in PG 2 → uiteindelijk ontwerp Voor de Latch: adresstroom (Latch uitgeschakeld) en erna Datastroom (Latch ingeschakeld).

Dit is dus een beter schema:

Dit is dus een beter schema:

Volgende 8 adreslijnen ( A 8 – A 15) → Poort C

Volgende 8 adreslijnen ( A 8 – A 15) → Poort C

Laatste 3 adreslijnen ( A 16 – A 19) → Poort B

Laatste 3 adreslijnen ( A 16 – A 19) → Poort B

Aansluiten Enable ingangen: CE (Chip Enable) → aan massa leggen → IC constant geselecteerd

Aansluiten Enable ingangen: CE (Chip Enable) → aan massa leggen → IC constant geselecteerd OE (Output Enable) moet actief zijn als we willen lezen uit het geheugen → aansluiten op RW van µP Bij de ATMEGA 128 is deze pen geïntegreerd in PF 7 → uiteindelijke ontwerp WE (Write Enable) → schrijfsignaal uit PB 3 van µP

Dit is het schema met de uitbreidingen:

Dit is het schema met de uitbreidingen:

Tenslotte ons deel van het uiteindelijke schema

Tenslotte ons deel van het uiteindelijke schema

Digitale Voice Recorder Team 3: De Microprocessor en de Software.

Digitale Voice Recorder Team 3: De Microprocessor en de Software.

Team 3 Tom Jacobs Davy Aerts Davy Leenen

Team 3 Tom Jacobs Davy Aerts Davy Leenen

De Microprocessor

De Microprocessor

De microprocessor

De microprocessor

Geheugen Configuratie

Geheugen Configuratie

Aansluiting van het ram geheugen

Aansluiting van het ram geheugen

I²C

I²C

Het schema om i²c te versturen

Het schema om i²c te versturen

Blokschema om i²c te versturen

Blokschema om i²c te versturen

Programma om i²c te versturen • void iclees_int(void) { TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN); while(!TWCR &(1<<TWINT)));

Programma om i²c te versturen • void iclees_int(void) { TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN); while(!TWCR &(1<<TWINT))); • if((TWSR & SCL) != start); • • error(); • TWDR = SLA_R TWCR = (1<<TWINT)|(1<<TWEN); • while(!(TWCR &(1<<TWINT))); • • if((TWSR & SCL) != MT_SLA_ACK); • • error(); } //zet codec als adc //stuur start conditie //wacht tot TWINT is geset, adc //heeft start conditie ontvangen //check waarde van TWI register, //maskeer prescaler, klok is 8 Khz //= fs //als status niet gelijk aan start //conditie, ga //naar error //laad adres in TWDR //clear TWINT bit in TWCR om //adres te zenden //wacht tot TWNT fag is geset //(SLA_W is verzonden en ACK is //ontvangen) //check waarde van TWI //register, maskeer prescaler //als satus niet gelijk is aan //MT_SLA_ACK ga //naar error

Het schema om i²c te ontvangen

Het schema om i²c te ontvangen

Blokschema om i²c te ontvangen

Blokschema om i²c te ontvangen

Programma om i²c te ontvangen • void lees_dac(void) { int puls; int tijd; TWCR

Programma om i²c te ontvangen • void lees_dac(void) { int puls; int tijd; TWCR = (1<<TWINT)|(1<<TWEN); • while(sec!=0) { puls = tik; do { if(STOP==1) • { sec = 0; • scan_knoppen(); • • } else { tijd = tik - puls; data[tijd] = TWDR; • • } } while(tijd!=8) scrijf_ram(); } } //lees data van adc //clear TWINT flag om data te //ontvangen //doe dit 1 minuit lang //wacht tot TWDR vol is //kijk of er nog niet op stop //gedrukt is //als stop gedrukt is beindig //opnemen //keer terug, om opnieuw //af te spelen of op te //nemen //zet de in houd van //TWDR in data //lees 8 bits // is een eeprom maar is toegankelijk // als sram

De Flowchart

De Flowchart

De Flowchart Start Initialisatie Poorten Scan Knoppen Return Scan Knoppen Record Ja neen Play

De Flowchart Start Initialisatie Poorten Scan Knoppen Return Scan Knoppen Record Ja neen Play neen Ja

De record Record Ja Return scan knoppen Lees ADC Initialisatie SPI Convert data Initialisatie

De record Record Ja Return scan knoppen Lees ADC Initialisatie SPI Convert data Initialisatie ADC Schrijf RAM Stop Klok = 0 Nee Ja Nee Start ADC Ja Return Scan Knoppen

De Play Ja Return scan knoppen Convert Data Initialisatie SPI Start DAC Initialisatie DAC

De Play Ja Return scan knoppen Convert Data Initialisatie SPI Start DAC Initialisatie DAC Schrijf DAC Stop Klok = 0 Nee Ja Nee Lees RAM Ja Return Scan Knoppen

Het programma

Het programma

Na 60 Seconden tijd stil en de rest tijd op de display zetten •

Na 60 Seconden tijd stil en de rest tijd op de display zetten • • interupt[TIMER_OVF]void TIFR(void) { sec = 0; } //als timmer =0 wordt stop • • • • void IRQ_TIME(void) { tik--; if(tik==0) { tik = preset //seconden tellen • • • void zeven_segment(void) { display_een--; if(display_een == 0 x 00) display_tien--; } sec--; zeven_segment(); } } interupt[INT 3]void teller(void) { //interupt van de klok bij elke puls IRQ_TIME(); }

Schrijven naar het ramgeheugen • • • • • • • void schrijf_ram(void); {

Schrijven naar het ramgeheugen • • • • • • • void schrijf_ram(void); { int plaats; OE = 0; WE = 1; ALE = 1; PORTA = pagina_teller; if(pagina_teller==0 x. FF) { PORTC++; pagina_teller = 0; if(PORTC==0 x. FF) { PORTB++; } } if(PORTA = 0 x. FF && PORTC = 0 x. FF && PORTB = 0 x 03) error(); ALE = 0; for(plaats = 0; plaat <= 7; plaats++) { DDA[plaats] = data[plaats]; } PORTA = DDRA; pagina_teller++; lees_adc(); } //output enabled //rw hoog maken, we gaan schrijven //lacht adres in adreslatch //selecteer geheugen plaats: eerste 8 //adreslijnen 9 tot 16 //adreslijnen 17 tot 19 //contoleer of ram niet //overloopt //zet 0 om data te sturen //laad data in DDRA //zet data op data bus //ga naar volgnde rij in EEPROM

Dit was de Digitale Voice Recorder van 3 elte 2

Dit was de Digitale Voice Recorder van 3 elte 2