-
-
Neuer Benutzer
Öfters hier
Welchen PIC nehme ich ?
Hallo,
Vielleicht kann mir jemand gute Info´s an die Hand geben, bzw. mir Tipps geben wie ich die Sache richtig angehe.
a) Ich benötige den richtigen Chip, nicht zu überdimensioniert. Aus der Reihe PIC16Fxxx.
Folgende Aufgabe möchte lösen.
Ich möchte die Ziffern 0-9 über eine Tastatur eingeben, diese sollen dann über ein Display direkt zu sehen sein. Anschließend soll über einen Taster diese Ziffer eingelesen werden und per Sprachausgabe diese Ziffer per Sprache zu hören sein.
Ist es nur über einen ISD Sprachausgabechip möglich oder auch über den Flash Memory des PIC?
Wenn mir jemand den Ansatz für beide Möglichkeiten liefert wäre es toll!!!
Gruß Staudi[/code]
-
Erfahrener Benutzer
Robotik Einstein
Hallo Staudi,
das mit der Tastatur und Anzeige ist eine einfache Angelegenheit:
8...10 Ein- / Ausgangs-Pins für die Tastatur, 4 oder 8 plus 2 für ein LC-Display, ein PIC 16F877 wäre da schon recht gut für geeignet.
Mit dem Flash-Speicher fangen aber die Probleme an. Der 16F877 hat zwar 8 K Flash, der ist aber mehr für Programm-Code vorgesehen und weniger für Daten. Auch der Eeprom-Bereich mit 256 Bytes dürfte da etwas bescheiden ausfallen.
Für die Sprach-Daten benötigst Du externen Speicher, z.B. Eprom oder Eeprom, wo die Sprach-Daten drin sind.
Auch so einen externen Speicher kannst Du noch vom PIC 16F877 aus steuern. Bleibt zu überlegen, auf welche Weise diese 'Steuerung' realisiert wird.
-
Neuer Benutzer
Öfters hier
AW:Welchen PIC nehme ich ?
Danke Karl Heinz,
hast du vielleicht auch Kenntnisse mit dem ISD Sprachausgabechip.
Ist dieser leicht einzubinden?
Gruß Staudi
-
Erfahrener Benutzer
Robotik Einstein
Kannst Du die genaue Bezeichnung oder einen Link zu einem Datenblatt posten, dann schau ich mir den Baustein mal kurz an.
Wo sitzen die Daten für die Sprachausgabe ? Wer bestimmt, was der Sprachausgabechip ausgeben soll ?
-
Erfahrener Benutzer
Fleißiges Mitglied
Entscheidend ist die gewünschte Sprachqualität. Minimal (Telefonqualität) sollte man Sprache mit 8000 Samples pro Sekunde und 8 Bit Auflösung abtasten. Jede Ziffer dauert gesprochen ungefähr eine halbe Sekunde. Das macht 10 Ziffern * 0.5 s * 8 kByte = 40 kByte Speicherbedarf für die Sprachdaten. Ein 24LC512 EEPROM sollte also reichen. Der PIC liest die Daten und haut sie 8000 mal pro Sekunde über einen Port raus. Müsste bei 10 MHz Takt machbar sein.
-
Erfahrener Benutzer
Robotik Einstein
Könnte mit dem Sprach-Eprom und etwas Hardware (Taktgenerator, Adress-Zähler, einige Gatter) nicht eine eigenständige 'Sprachausgabe-Einheit' aufgebaut werden, die vom PIC die höchsten Adress-Bits mit dem gewünschten Text-Bereich und ein Startsignal bekommt und am Ende der Sprachausgabe (die Texte sind ja unterschiedlich lang) einen 'Fertig-Impuls' an den PIC liefert, der dann wiederum die nächste 'Zahl' vorbereitet ?
Wenn alles über den PIC laufen soll, sind immerhin 13...15 Bits für Eprom-Adressen und 8 für Eprom-Daten = je ein Port-Pin des PIC erforderlich, es sei denn, Adressen und Daten werden gemultiplext; dann sind es immer noch 13...15 Bits plus Steuer-Bits.
-
Erfahrener Benutzer
Lebende Robotik Legende
Hallo!
@phaidros
Ich habe mich vor ca.30 Jahren ein bischen mit digitaliesieren der Sprache beschäftigt (damals hat es noch keine Mikrokontroller gegeben).
Die Abtastfrequenz sollte das doppelte der max. Frequenz sein. Ich habe aber die Hälfte also die max. Frequenz genommen und zwischen zwei Samples noch ein "künstliches" Sample ausgegeben. Dieses Sample war einfach der Mittelwert den beiden. Die Qualität war nicht viel schlechter. Somit habe ich den Speicher halbieren können.
Laut Deiner Berechnung, wenn man diese Methode nimmt, werden nur 20kB Programmspeicher benötigt. Z.B. der PIC 18F252 oder 18F2550 hat 32kB Programmspeicher, dann bleiben noch 12kB für Programm und ausser Tasten und Display ist keine externe Hardware erforderlich. Vielleicht wäre die Idee für Dich nutzlich ? 
MfG
-
Erfahrener Benutzer
Fleißiges Mitglied
@PICture: Ja, an die 18er Reihe habe ich auch schon gedacht. Staudi wollte aber einen 16er nehmen.
@kalledom: Das EEprom ist ein I2C-Baustein. braucht also nur 2 Leitungen.
-
Erfahrener Benutzer
Robotik Einstein
@phaidros
Was das I2C-Eeprom betrifft:
1. Wieviel KiloByte (nicht KiloBit) hat das größte I2C-Eeprom ?
2. Wie lange dauert es, bis alle Daten per I2C ausgelesen sind ?
3. Wo werden die ausgelesenen Daten abgelegt ?
-
Erfahrener Benutzer
Fleißiges Mitglied
@kalledom:
1. Keine Ahnung.
2. Der I2C-Bus kann mit mindestens 100 kb/s laufen. Macht also ungefähr 10 KByte pro Sekunde.
3. Nirgendwo. 8000 mal pro Sekunde holst du einen Wert aus dem Eeprom und gibst ihn sofort wieder auf einen Port aus. An dem hängt ein einfacher D/A-Wandler oder ähnliches. Du musst nur für jede Ziffer Anfangs- und Endadresse im Eeprom wissen. Alle Daten dazwischen werden ausgegeben.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen