https://wiki.hevs.ch/fsi/api.php5?action=feedcontributions&user=Cof&feedformat=atomFSI - User contributions [en]2024-03-29T14:05:03ZUser contributionsMediaWiki 1.18.1https://wiki.hevs.ch/fsi/index.php5/Kart/serial_linkKart/serial link2014-06-12T09:17:08Z<p>Cof: /* SmartPhone to Kart */</p>
<hr />
<div>{{TOC right}}<br />
== Serial link protocol ==<br />
<br />
This section defines the serial link protocol used to communicate between the Kart and the SmartPhone. All data is spontaneous send and can not be polled.<br />
<br />
=== Serial port===<br />
<br />
Communication is done with:<br />
* 115200 baud<br />
* 8 bits<br />
* no parity<br />
* no handshake<br />
<br />
=== Message Format ===<br />
<br />
{| cellpadding="8" cellspacing="0" border="1"<br />
! SoF (1 byte)<br />
! Address (1 byte)<br />
! Data (2 bytes)<br />
! EoF (1 byte)<br />
|-<br />
| 0x55<br />
| UINT8<br />
| UINT16/INT16<br />
| 0xAA<br />
|}<br />
<br />
== Registers ==<br />
<br />
=== SmartPhone to Kart ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Datatype<br />
! Description<br />
|-<br />
| 0<br />
| UINT16<br />
| DC motor PWM period<br />
|-<br />
| 1<br />
| INT5<br />
| DC motor speed: -15 to 15 (Negative numbers = backwards)<br />
|-<br />
| 2<br />
| UINT16<br />
| Stepper motor period (speed proportional to 1/period)<br />
|-<br />
| 3<br />
| UINT16<br />
| Desired steering angle<br />
|-<br />
| 4<br />
| UINT5<br />
| End switch address<br />
|-<br />
| 5<br />
| UINT5<br />
| Hardware orientation<br />
|-<br />
| 6<br />
| UINT4<br />
| LEDs<br />
|-<br />
| 15<br />
| UINT16<br />
| Serial link update interval [ms]<br />
|}<br />
<br />
=== Kart to SmartPhone ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Datatype<br />
! Description<br />
|-<br />
| 0<br />
| UINT16<br />
| Hall speed count 1<br />
|-<br />
| 1<br />
| UINT16<br />
| Hall speed count 2<br />
|-<br />
| 2<br />
| UINT1<br />
| Steering status: 0x01 means angle reached<br />
|-<br />
| 3<br />
| UINT16<br />
| Actual Steering Angle<br />
|-<br />
| 4<br />
| UINT1<br />
| Stepper End (bit is '0' when end switch is pressed)<br />
|-<br />
| 5<br />
| UINT16<br />
| ADC Value of the Battery Voltage Level<br />
|-<br />
|<br />
|<br />
|<br />
|-<br />
| 8<br />
| UINT16<br />
| Proximity 1<br />
|-<br />
| 9<br />
| UINT16<br />
| Proximity 2<br />
|-<br />
| 10<br />
| UINT16<br />
| Proximity 3<br />
|-<br />
| 11<br />
| UINT16<br />
| Proximity 4<br />
|-<br />
| 12<br />
| UINT16<br />
| Ambient Light 1<br />
|-<br />
| 13<br />
| UINT16<br />
| Ambient Light 2<br />
|-<br />
| 14<br />
| UINT16<br />
| Ambient Light 3<br />
|-<br />
| 15<br />
| UINT16<br />
| Ambient Light 4<br />
|}<br />
<br />
=== Hardware orientation ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Bit<br />
! Meaning<br />
! Description<br />
|-<br />
| 0<br />
| Kart goes as DC motor<br />
| When '0', the kart goes backwards when the motor turns forwards<br />
|-<br />
| 1<br />
| Kart turns right (clockwise)<br />
| When '1', kart turns to the right as stepper motor phases go from 1 to 4<br />
|-<br />
| 2<br />
| End sensor is on left side<br />
| If '1', the angles are measured clockwise.<br />
|}<br />
<br />
The end sensor always defines position 0. Angles are always positive.<br />
<br />
If bits 1 and 2 are different, the stepper motor phase sequence has to be inverted.<br />
<br />
[[Category:Kart]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/Kart/I2C_linkKart/I2C link2014-06-12T08:53:15Z<p>Cof: /* Control registers */</p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
<br />
== I2C link protocol ==<br />
<br />
This section defines the I2C link protocol used to communicate between the serial link interface and the different components of the kart.<br />
<br />
=== I2C frames ===<br />
<br />
The protocol consists of a repeated polling. At a rate of 1 kHz, the I2C master:<br />
* first sends all control values on the bus<br />
* then requests all component data values on the bus<br />
<br />
=== Register map ===<br />
<br />
The I2C registers are 8 bit.<br />
The RS232 frames define 16 bit values.<br />
So each control and data value uses 2 I2C addresses.<br />
<br />
==== Control registers ====<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Block<br />
! Name<br />
! Initial value (hex.)<br />
! Description<br />
|-<br />
| 0<br />
| rowspan="2"|DC Motor<br />
| PWM divider<br />
| 0040<br />
| divider value from the clock frequency to the PWM step enable<br />
|-<br />
| 2<br />
| speed<br />
| 0000<br />
| DC motor speed (Negative numbers = backwards, positive numbers = forwards)<br />
|-<br />
| 4<br />
| rowspan="3"|Stepper Motor<br />
| stepper divider<br />
| 0100<br />
| divider value from the clock frequency to the stepper motor step period<br />
|-<br />
| 6<br />
| target angle<br />
| TBD<br />
| Stepper motor target angle (zero is stepper end sensor, values are positive only)<br />
|-<br />
| 8<br />
| end switch address<br />
| 0004<br />
| Specifies the address at which the end switch is read at bit 0 (if it isn't local)<br />
|-<br />
| 10<br />
| Kart<br />
| hardware control<br />
| 0007<br />
| see below<br />
|-<br />
| 12<br />
| LEDs<br />
| LEDs<br />
| 0000<br />
| Led controls<br />
|-<br />
| 30<br />
| Controller<br />
| update period<br />
| 0040<br />
| number of milliseconds between two status messages on serial port<br />
|}<br />
<br />
The hardware control register is given as:<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Bits<br />
! Name<br />
! Function<br />
|-<br />
| 15:5<br />
| <br />
| TBD<br />
|-<br />
| 4<br />
| restart<br />
| Puts following slaves back in startup mode: stepper motor.<br />
|-<br />
| 3<br />
| stepper end<br />
| Emulates a stepper end switch, but is sent by the master. Will be "ORed" with the stepper motor's specific end switch.<br />
|-<br />
| 2:0<br />
| [[Kart/serial_link#Hardware_orientation|hardware orientation]]<br />
| Defines how the motor rotations are linked to the kart displacements<br />
|}<br />
<br />
==== Data registers ====<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Block<br />
! Name<br />
! Description<br />
|-<br />
| 0<br />
| rowspan="2" | Sensors<br />
| Hall sensor 1<br />
| Pulse count<br />
|-<br />
| 2<br />
| Hall sensor 2<br />
| Pulse count<br />
|-<br />
| 4<br />
| rowspan="3" | Stepper Motor<br />
| stepper status<br />
| bit 0: stepper end when '0' <br> bit 1: position reached<br />
|-<br />
| 6<br />
| stepper angle<br />
| Actual stepper motor angle<br />
|-<br />
| 8 || ||<br />
|-<br />
| 10<br />
| Power supply<br />
| ADC value<br />
| Value read from the ADC measuring the battery voltage<br />
|-<br />
| || || ||<br />
|-<br />
| 16<br />
| rowspan="8" | Sensors<br />
| rowspan="4" | Proximity<br />
| Proximity from sensor 1<br />
|-<br />
| 18<br />
| Proximity from sensor 2<br />
|-<br />
| 20<br />
| Proximity from sensor 3<br />
|-<br />
| 22<br />
| Proximity from sensor 4<br />
|-<br />
| 24<br />
| rowspan="4" | Ambient light<br />
| Ambient light from sensor 1<br />
|-<br />
| 26<br />
| Ambient light from sensor 2<br />
|-<br />
| 28<br />
| Ambient light from sensor 3<br />
|-<br />
| 30<br />
| Ambient light from sensor 4<br />
|}</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/KartKart2014-06-11T15:42:53Z<p>Cof: /* System Architecture */</p>
<hr />
<div>{{TOC right}}<br />
The Kart module is a Summer School module for students between 3. and 4. semester. It's a home-made car remotely controlled by a smart-phone.<br />
<br />
The work of the students can be summarized in four main tasks:<br />
* design and build the chassis<br />
* analyse the motor driver circuits (DC and stepper)<br />
* configure the controlling FPGAs<br />
* complete and extend the GUI on the smart-phone<br />
<br />
[[File:SummerSchool_12.jpg|thumb|Summer School '12]]<br />
[[File:SummerSchool_13.jpg|thumb|Summer School '13]]<br />
[[File:Kart.jpg|center|600px|Demo Kart]]<br />
<br />
== System Architecture ==<br />
<br />
The kart is controlled by a smartphone via Bluetooth.<br />
<br />
=== Distributed boards ===<br />
<br />
A Bluetooth receiver on the kart communicates via an [[kart/serial link|RS232 serial link]] with the FPGA control board.<br />
<br />
The control is distributed over several FPGA boards connected together via [[kart/I2C link|I2C]]:<br />
* An I2C master receives RS232 controls, stores them in a set of registers and dispatches them at a regular interval on the I2C. The master also reads data values from the I2C, stores them into a second set of registers and sends the corresponding information at a regular rate over the RS232.<br />
* A [[Kart/DC motor controller|DC motor controller]] receives a speed value and builds a PWM and a direction control.<br />
* A [[Kart/stepper motor controller|stepper motor controller]] receives the desired angle and builds the coil controls signals.<br />
* A sensor board manages I/O comprising proximity sensors, hall sensors (for the driving speed) and LEDs.<br />
<br />
=== Bluetooth communication ===<br />
A Bluetooth communication transfers serial port data.<br />
A receiver chip creates the RS232 signals for the FPGA.<br />
The [[kart/serial link#Serial link protocol|protocol]] defines how the [[kart/serial link#Registers|registers]] are accessed.<br />
<br />
The FPGA receives following controls:<br />
* the propulsion DC motor speed and direction<br />
* the steering stepper motor target angle and step period<br />
* four LEDs<br />
The FPGA sends following information back:<br />
* the [[kart/battery level|battery level]]<br />
* the actual steering angle<br />
* the [[Kart/sensors/VCNL4000|proximity sensor]] data<br />
* the [[Kart/sensors/SS311PT|hall sensor]] pulse count<br />
<br />
== Components ==<br />
<br />
=== Boards ===<br />
There are motherboards equipped with a AGL125 in a VQ100 package. They connect to Daughterboards which hold the connectors to the different mechanical parts of the Kart. Each Motherboard therefore controls one motor or multiple sensors on the Kart. These Daughterboards are configured as slaves and are all connected to one master Motherboard.<br />
<br />
Existing daughterboards are:<br />
* [[Kart/DC motor controller|DC motor controller]]<br />
* [[Kart/stepper motor controller|stepper motor controller]]<br />
<br />
=== Board connectors ===<br />
The FPGA board has following connections:<br />
* a [[kart/connectors/Header|26 pin Header]] connector<br />
* a 9 pole DSub connector for RS232<br />
* the FPGA JTAG programming connector<br />
<br />
=== Sensors ===<br />
* [[kart/sensors/VCNL4000|VCNL4000 i2c Distance/Ambience Light Sensor]]<br />
* [[kart/sensors/SS311PT|SS311PT Hall Sensor]]<br />
<br />
== Getting started ==<br />
In order to start the projects you should do the following:<br />
* Read carefully the specifications above<br />
* Consult the [[kart/students|student's guide]] for the first steps<br />
* When preparing the labs, follow the [[kart/setup|setup guide]]<br />
<br />
== Additional Information ==<br />
<br />
* Additional informations [[kart/professor|for collaborators]]<br />
* [[kart/toDo|To do list]]<br />
<br />
[[Category:Kart]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/KartKart2014-06-11T15:36:58Z<p>Cof: </p>
<hr />
<div>{{TOC right}}<br />
The Kart module is a Summer School module for students between 3. and 4. semester. It's a home-made car remotely controlled by a smart-phone.<br />
<br />
The work of the students can be summarized in four main tasks:<br />
* design and build the chassis<br />
* analyse the motor driver circuits (DC and stepper)<br />
* configure the controlling FPGAs<br />
* complete and extend the GUI on the smart-phone<br />
<br />
[[File:SummerSchool_12.jpg|thumb|Summer School '12]]<br />
[[File:SummerSchool_13.jpg|thumb|Summer School '13]]<br />
[[File:Kart.jpg|center|600px|Demo Kart]]<br />
<br />
== System Architecture ==<br />
<br />
The kart is controlled by a smartphone via Bluetooth.<br />
<br />
A Bluetooth receiver on the kart communicates via an [[kart/serial link|RS232 serial link]] with the FPGA control board.<br />
<br />
The control is distributed over several FPGA boards connected via [[kart/I2C link|I2C]]:<br />
* An I2C master receives RS232 controls, stores them in a set of registers and dispatches them at a regular interval on the I2C. The master also reads data values from the I2C, stores them into a second set of registers and sends the corresponding information at a regular rate over the RS232.<br />
* A [[Kart/DC motor controller|DC motor controller]] receives a speed value and builds a PWM and a direction control.<br />
* A [[Kart/stepper motor controller|stepper motor controller]] receives the desired angle and builds the coil controls signals.<br />
<br />
=== Bluetooth communication ===<br />
A Bluetooth communication transfers serial port data.<br />
A receiver chip creates the RS232 signals for the FPGA.<br />
The [[kart/serial link#Serial link protocol|protocol]] defines how the [[kart/serial link#Registers|registers]] are accessed.<br />
<br />
The FPGA receives following controls:<br />
* the propulsion DC motor speed and direction<br />
* the steering stepper motor target angle and step period<br />
* four LEDs<br />
The FPGA sends following information back:<br />
* the [[kart/battery level|battery level]]<br />
* the actual steering angle<br />
* the [[Kart/sensors/VCNL4000|proximity sensor]] data<br />
* the [[Kart/sensors/SS311PT|hall sensor]] pulse count<br />
<br />
=== Sensors ===<br />
* [[kart/sensors/VCNL4000|VCNL4000 i2c Distance/Ambience Light Sensor]]<br />
* [[kart/sensors/SS311PT|SS311PT Hall Sensor]]<br />
<br />
=== Board connectors ===<br />
The FPGA board has following connections:<br />
* a [[kart/connectors/Header|26 pin Header]] connector<br />
* a 9 pole DSub connector for RS232<br />
* the FPGA JTAG programming connector<br />
<br />
=== Boards ===<br />
There are motherboards equipped with a AGL125 in a VQ100 package. They connect to Daughterboards which hold the connectors to the different mechanical parts of the Kart. Each Motherboard therefore controls one motor or multiple sensors on the Kart. These Daughterboards are configured as slaves and are all connected to one master Motherboard.<br />
<br />
Existing daughterboards are:<br />
* [[Kart/DC motor controller|DC motor controller]]<br />
* [[Kart/stepper motor controller|stepper motor controller]]<br />
<br />
== Getting started ==<br />
In order to start the projects you should do the following:<br />
* Read carefully the specifications above<br />
* Consult the [[kart/students|student's guide]] for the first steps<br />
* When preparing the labs, follow the [[kart/setup|setup guide]]<br />
<br />
== Additional Information ==<br />
<br />
* Additional informations [[kart/professor|for collaborators]]<br />
* [[kart/toDo|To do list]]<br />
<br />
[[Category:Kart]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/Kart/serial_linkKart/serial link2014-06-11T15:28:56Z<p>Cof: </p>
<hr />
<div>{{TOC right}}<br />
== Serial link protocol ==<br />
<br />
This section defines the serial link protocol used to communicate between the Kart and the SmartPhone. All data is spontaneous send and can not be polled.<br />
<br />
=== Serial port===<br />
<br />
Communication is done with:<br />
* 115200 baud<br />
* 8 bits<br />
* no parity<br />
* no handshake<br />
<br />
=== Message Format ===<br />
<br />
{| cellpadding="8" cellspacing="0" border="1"<br />
! SoF (1 byte)<br />
! Address (1 byte)<br />
! Data (2 bytes)<br />
! EoF (1 byte)<br />
|-<br />
| 0x55<br />
| UINT8<br />
| UINT16/INT16<br />
| 0xAA<br />
|}<br />
<br />
== Registers ==<br />
<br />
=== SmartPhone to Kart ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Datatype<br />
! Description<br />
|-<br />
| 0<br />
| UINT16<br />
| DC motor PWM period<br />
|-<br />
| 1<br />
| INT5<br />
| DC motor speed: -15 to 15 (Negative numbers = backwards)<br />
|-<br />
| 2<br />
| UINT16<br />
| stepper motor period (speed proportional to 1/period)<br />
|-<br />
| 3<br />
| UINT16<br />
| Desired Steering Angle<br />
|-<br />
| 3<br />
| UINT16<br />
| LEDs<br />
|-<br />
| 5<br />
| UINT16<br />
| Hardware orientation<br />
|-<br />
| 15<br />
| UINT16<br />
| Serial link update interval [ms]<br />
|}<br />
<br />
=== Kart to SmartPhone ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Datatype<br />
! Description<br />
|-<br />
| 0<br />
| UINT16<br />
| Hall speed count 1<br />
|-<br />
| 1<br />
| UINT16<br />
| Hall speed count 2<br />
|-<br />
| 2<br />
| UINT1<br />
| Steering status: 0x01 means angle reached<br />
|-<br />
| 3<br />
| UINT16<br />
| Actual Steering Angle<br />
|-<br />
| 4<br />
| UINT1<br />
| Stepper End (bit is '0' when end switch is pressed)<br />
|-<br />
| 5<br />
| UINT16<br />
| ADC Value of the Battery Voltage Level<br />
|-<br />
|<br />
|<br />
|<br />
|-<br />
| 8<br />
| UINT16<br />
| Proximity 1<br />
|-<br />
| 9<br />
| UINT16<br />
| Proximity 2<br />
|-<br />
| 10<br />
| UINT16<br />
| Proximity 3<br />
|-<br />
| 11<br />
| UINT16<br />
| Proximity 4<br />
|-<br />
| 12<br />
| UINT16<br />
| Ambient Light 1<br />
|-<br />
| 13<br />
| UINT16<br />
| Ambient Light 2<br />
|-<br />
| 14<br />
| UINT16<br />
| Ambient Light 3<br />
|-<br />
| 15<br />
| UINT16<br />
| Ambient Light 4<br />
|}<br />
<br />
=== Hardware orientation ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Bit<br />
! Meaning<br />
! Description<br />
|-<br />
| 0<br />
| Kart goes as DC motor<br />
| When '0', the kart goes backwards when the motor turns forwards<br />
|-<br />
| 1<br />
| Kart turns right (clockwise)<br />
| When '1', kart turns to the right as stepper motor phases go from 1 to 4<br />
|-<br />
| 2<br />
| End sensor is on left side<br />
| If '1', the angles are measured clockwise.<br />
|}<br />
<br />
The end sensor always defines position 0. Angles are always positive.<br />
<br />
If bits 1 and 2 are different, the stepper motor phase sequence has to be inverted.<br />
<br />
[[Category:Kart]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/Kart/serial_linkKart/serial link2014-06-11T15:22:01Z<p>Cof: /* SmartPhone to Kart */</p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
== Serial link protocol ==<br />
<br />
This section defines the serial link protocol used to communicate between the Kart and the SmartPhone. All data is spontaneous send and can not be polled.<br />
<br />
=== Serial port===<br />
<br />
Communication is done with:<br />
* 115200 baud<br />
* 8 bits<br />
* no parity<br />
* no handshake<br />
<br />
=== Message Format ===<br />
<br />
{| cellpadding="8" cellspacing="0" border="1"<br />
! SoF (1 byte)<br />
! Address (1 byte)<br />
! Data (2 bytes)<br />
! EoF (1 byte)<br />
|-<br />
| 0x55<br />
| UINT8<br />
| UINT16/INT16<br />
| 0xAA<br />
|}<br />
<br />
== Registers ==<br />
<br />
=== SmartPhone to Kart ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Datatype<br />
! Description<br />
|-<br />
| 0<br />
| UINT16<br />
| DC motor PWM period<br />
|-<br />
| 1<br />
| INT5<br />
| DC motor speed: -15 to 15 (Negative numbers = backwards)<br />
|-<br />
| 2<br />
| UINT16<br />
| stepper motor period (speed proportional to 1/period)<br />
|-<br />
| 3<br />
| UINT16<br />
| Desired Steering Angle<br />
|-<br />
| 3<br />
| UINT16<br />
| LEDs<br />
|-<br />
| 5<br />
| UINT16<br />
| Hardware orientation<br />
|-<br />
| 15<br />
| UINT16<br />
| Serial link update interval [ms]<br />
|}<br />
<br />
=== Kart to SmartPhone ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Datatype<br />
! Description<br />
|-<br />
| 0<br />
| UINT16<br />
| Hall speed count 1<br />
|-<br />
| 1<br />
| UINT16<br />
| Hall speed count 2<br />
|-<br />
| 2<br />
| UINT1<br />
| Steering status: 0x01 means angle reached<br />
|-<br />
| 3<br />
| UINT16<br />
| Actual Steering Angle<br />
|-<br />
| 4<br />
| UINT1<br />
| Stepper End (bit is '0' when end switch is pressed)<br />
|-<br />
| 5<br />
| UINT16<br />
| ADC Value of the Battery Voltage Level<br />
|-<br />
|<br />
|<br />
|<br />
|-<br />
| 8<br />
| UINT16<br />
| Proximity 1<br />
|-<br />
| 9<br />
| UINT16<br />
| Proximity 2<br />
|-<br />
| 10<br />
| UINT16<br />
| Proximity 3<br />
|-<br />
| 11<br />
| UINT16<br />
| Proximity 4<br />
|-<br />
| 12<br />
| UINT16<br />
| Ambient Light 1<br />
|-<br />
| 13<br />
| UINT16<br />
| Ambient Light 2<br />
|-<br />
| 14<br />
| UINT16<br />
| Ambient Light 3<br />
|-<br />
| 15<br />
| UINT16<br />
| Ambient Light 4<br />
|}<br />
<br />
=== Hardware orientation ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Bit<br />
! Meaning<br />
! Description<br />
|-<br />
| 0<br />
| Kart goes as DC motor<br />
| When '0', the kart goes backwards when the motor turns forwards<br />
|-<br />
| 1<br />
| Kart turns right (clockwise)<br />
| When '1', kart turns to the right as stepper motor phases go from 1 to 4<br />
|-<br />
| 2<br />
| End sensor is on left side<br />
| If '1', the angles are measured clockwise.<br />
|}<br />
<br />
The end sensor always defines position 0. Angles are always positive.<br />
<br />
If bits 1 and 2 are different, the stepper motor phase sequence has to be inverted.<br />
<br />
[[Category:Kart]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/Kart/I2C_linkKart/I2C link2014-06-11T15:20:25Z<p>Cof: /* Data registers */</p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
<br />
== I2C link protocol ==<br />
<br />
This section defines the I2C link protocol used to communicate between the serial link interface and the different components of the kart.<br />
<br />
=== I2C frames ===<br />
<br />
The protocol consists of a repeated polling. At a rate of 1 kHz, the I2C master:<br />
* first sends all control values on the bus<br />
* then requests all component data values on the bus<br />
<br />
=== Register map ===<br />
<br />
The I2C registers are 8 bit.<br />
The RS232 frames define 16 bit values.<br />
So each control and data value uses 2 I2C addresses.<br />
<br />
==== Control registers ====<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Block<br />
! Name<br />
! Initial value (hex.)<br />
! Description<br />
|-<br />
| 0<br />
| rowspan="2"|DC Motor<br />
| PWM divider<br />
| 0040<br />
| divider value from the clock frequency to the PWM step enable<br />
|-<br />
| 2<br />
| speed<br />
| 0000<br />
| DC motor speed (Negative numbers = backwards, positive numbers = forwards)<br />
|-<br />
| 4<br />
| rowspan="3"|Stepper Motor<br />
| stepper divider<br />
| 0100<br />
| divider value from the clock frequency to the stepper motor step period<br />
|-<br />
| 6<br />
| target angle<br />
| TBD<br />
| Stepper motor target angle (zero is stepper end sensor, values are positive only)<br />
|-<br />
| 8<br />
| end switch address<br />
| 0004<br />
| Specifies the address at which the end switch is read at bit 0 (if it isn't local)<br />
|-<br />
| 10<br />
| Kart<br />
| hardware control<br />
| 0007<br />
| see below<br />
|-<br />
| 12<br />
| LEDs<br />
| LEDs<br />
| 0000<br />
| Led controls<br />
|-<br />
| 30<br />
| Controller<br />
| update period<br />
| 0040<br />
| number of milliseconds between two status messages on serial port<br />
|}<br />
<br />
The hardware control register is given as:<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Bits<br />
! Name<br />
! Function<br />
|-<br />
| 15:5<br />
| <br />
| TBD<br />
|-<br />
| 4<br />
| restart<br />
| Puts all slaves back in startup mode.<br />
|-<br />
| 3<br />
| stepper end<br />
| Emulates a stepper end switch, but is sent by the master. Will be "ORed" with the stepper motor's specific end switch.<br />
|-<br />
| 2:0<br />
| [[Kart/serial_link#Hardware_orientation|hardware orientation]]<br />
| Defines how the motor rotations are linked to the kart displacements<br />
|}<br />
<br />
==== Data registers ====<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Block<br />
! Name<br />
! Description<br />
|-<br />
| 0<br />
| rowspan="2" | Sensors<br />
| Hall sensor 1<br />
| Pulse count<br />
|-<br />
| 2<br />
| Hall sensor 2<br />
| Pulse count<br />
|-<br />
| 4<br />
| rowspan="3" | Stepper Motor<br />
| stepper status<br />
| bit 0: stepper end when '0' <br> bit 1: position reached<br />
|-<br />
| 6<br />
| stepper angle<br />
| Actual stepper motor angle<br />
|-<br />
| 8 || ||<br />
|-<br />
| 10<br />
| Power supply<br />
| ADC value<br />
| Value read from the ADC measuring the battery voltage<br />
|-<br />
| || || ||<br />
|-<br />
| 16<br />
| rowspan="8" | Sensors<br />
| rowspan="4" | Proximity<br />
| Proximity from sensor 1<br />
|-<br />
| 18<br />
| Proximity from sensor 2<br />
|-<br />
| 20<br />
| Proximity from sensor 3<br />
|-<br />
| 22<br />
| Proximity from sensor 4<br />
|-<br />
| 24<br />
| rowspan="4" | Ambient light<br />
| Ambient light from sensor 1<br />
|-<br />
| 26<br />
| Ambient light from sensor 2<br />
|-<br />
| 28<br />
| Ambient light from sensor 3<br />
|-<br />
| 30<br />
| Ambient light from sensor 4<br />
|}</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/Kart/I2C_linkKart/I2C link2014-06-11T12:30:25Z<p>Cof: /* Data registers */</p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
<br />
== I2C link protocol ==<br />
<br />
This section defines the I2C link protocol used to communicate between the serial link interface and the different components of the kart.<br />
<br />
=== I2C frames ===<br />
<br />
The protocol consists of a repeated polling. At a rate of 1 kHz, the I2C master:<br />
* first sends all control values on the bus<br />
* then requests all component data values on the bus<br />
<br />
=== Register map ===<br />
<br />
The I2C registers are 8 bit.<br />
The RS232 frames define 16 bit values.<br />
So each control and data value uses 2 I2C addresses.<br />
<br />
==== Control registers ====<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Block<br />
! Name<br />
! Initial value (hex.)<br />
! Description<br />
|-<br />
| 0<br />
| rowspan="2"|DC Motor<br />
| PWM divider<br />
| 0040<br />
| divider value from the clock frequency to the PWM step enable<br />
|-<br />
| 2<br />
| speed<br />
| 0000<br />
| DC motor speed (Negative numbers = backwards, positive numbers = forwards)<br />
|-<br />
| 4<br />
| rowspan="3"|Stepper Motor<br />
| stepper divider<br />
| 0100<br />
| divider value from the clock frequency to the stepper motor step period<br />
|-<br />
| 6<br />
| target angle<br />
| TBD<br />
| Stepper motor target angle (zero is stepper end sensor, values are positive only)<br />
|-<br />
| 8<br />
| end switch address<br />
| 0004<br />
| Specifies the address at which the end switch is read at bit 0 (if it isn't local)<br />
|-<br />
| 10<br />
| Kart<br />
| hardware control<br />
| 0007<br />
| see below<br />
|-<br />
| 12<br />
| LEDs<br />
| LEDs<br />
| 0000<br />
| Led controls<br />
|-<br />
| 30<br />
| Controller<br />
| update period<br />
| 0040<br />
| number of milliseconds between two status messages on serial port<br />
|}<br />
<br />
The hardware control register is given as:<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Bits<br />
! Name<br />
! Function<br />
|-<br />
| 15:5<br />
| <br />
| TBD<br />
|-<br />
| 4<br />
| restart<br />
| Puts all slaves back in startup mode.<br />
|-<br />
| 3<br />
| stepper end<br />
| Emulates a stepper end switch, but is sent by the master. Will be "ORed" with the stepper motor's specific end switch.<br />
|-<br />
| 2:0<br />
| [[Kart/serial_link#Hardware_orientation|hardware orientation]]<br />
| Defines how the motor rotations are linked to the kart displacements<br />
|}<br />
<br />
==== Data registers ====<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Block<br />
! Name<br />
! Description<br />
|-<br />
| 0<br />
| rowspan="2" | Sensors<br />
| Hall sensor 1<br />
| Pulse count<br />
|-<br />
| 2<br />
| Hall sensor 2<br />
| Pulse count<br />
|-<br />
| 4<br />
| rowspan="3" | Stepper Motor<br />
| stepper status<br />
| bit 0: stepper end when '0' <br> bit 1: position reached<br />
|-<br />
| 6<br />
| stepper angle<br />
| Actual stepper motor angle<br />
|-<br />
| 8 || ||<br />
|-<br />
| 10<br />
| Power supply<br />
| ADC value<br />
| Value read from the ADC measuring the battery voltage<br />
|-<br />
| || || ||<br />
|-<br />
| 16<br />
| rowspan="8" | Sensors<br />
| rowspan="4" | Proximity<br />
| Proximity from sensor 1<br />
|-<br />
| 18<br />
| Proximity from sensor 2<br />
|-<br />
| 20<br />
| Proximity from sensor 3<br />
|-<br />
| 22<br />
| Proximity from sensor 4<br />
|-<br />
| 24<br />
| rowspan="4" | Ambient light<br />
| Ambient light from sensor 1<br />
|-<br />
| 26<br />
| Ambient light from sensor 2<br />
|-<br />
| 26<br />
| Ambient light from sensor 3<br />
|-<br />
| 26<br />
| Ambient light from sensor 4<br />
|}</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/Kart/serial_linkKart/serial link2014-06-11T12:22:36Z<p>Cof: /* Kart to SmartPhone */</p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
== Serial link protocol ==<br />
<br />
This section defines the serial link protocol used to communicate between the Kart and the SmartPhone. All data is spontaneous send and can not be polled.<br />
<br />
=== Serial port===<br />
<br />
Communication is done with:<br />
* 115200 baud<br />
* 8 bits<br />
* no parity<br />
* no handshake<br />
<br />
=== Message Format ===<br />
<br />
{| cellpadding="8" cellspacing="0" border="1"<br />
! SoF (1 byte)<br />
! Address (1 byte)<br />
! Data (2 bytes)<br />
! EoF (1 byte)<br />
|-<br />
| 0x55<br />
| UINT8<br />
| UINT16/INT16<br />
| 0xAA<br />
|}<br />
<br />
== Registers ==<br />
<br />
=== SmartPhone to Kart ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Datatype<br />
! Description<br />
|-<br />
| 0<br />
| UINT16<br />
| DC motor PWM period<br />
|-<br />
| 1<br />
| INT5<br />
| DC motor speed: -15 to 15 (Negative numbers = backwards)<br />
|-<br />
| 2<br />
| UINT16<br />
| stepper motor period (speed proportional to 1/period)<br />
|-<br />
| 3<br />
| UINT16<br />
| Desired Steering Angle<br />
|-<br />
| 3<br />
| UINT16<br />
| LEDs<br />
|-<br />
| 5<br />
| UINT16<br />
| Hardware orientation<br />
|-<br />
| 30<br />
| UINT16<br />
| Serial link update interval [ms]<br />
|}<br />
<br />
=== Kart to SmartPhone ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Datatype<br />
! Description<br />
|-<br />
| 0<br />
| UINT16<br />
| Hall speed count 1<br />
|-<br />
| 1<br />
| UINT16<br />
| Hall speed count 2<br />
|-<br />
| 2<br />
| UINT1<br />
| Steering status: 0x01 means angle reached<br />
|-<br />
| 3<br />
| UINT16<br />
| Actual Steering Angle<br />
|-<br />
| 4<br />
| UINT1<br />
| Stepper End (bit is '0' when end switch is pressed)<br />
|-<br />
| 5<br />
| UINT16<br />
| ADC Value of the Battery Voltage Level<br />
|-<br />
|<br />
|<br />
|<br />
|-<br />
| 8<br />
| UINT16<br />
| Proximity 1<br />
|-<br />
| 9<br />
| UINT16<br />
| Proximity 2<br />
|-<br />
| 10<br />
| UINT16<br />
| Proximity 3<br />
|-<br />
| 11<br />
| UINT16<br />
| Proximity 4<br />
|-<br />
| 12<br />
| UINT16<br />
| Ambient Light 1<br />
|-<br />
| 13<br />
| UINT16<br />
| Ambient Light 2<br />
|-<br />
| 14<br />
| UINT16<br />
| Ambient Light 3<br />
|-<br />
| 15<br />
| UINT16<br />
| Ambient Light 4<br />
|}<br />
<br />
=== Hardware orientation ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Bit<br />
! Meaning<br />
! Description<br />
|-<br />
| 0<br />
| Kart goes as DC motor<br />
| When '0', the kart goes backwards when the motor turns forwards<br />
|-<br />
| 1<br />
| Kart turns right (clockwise)<br />
| When '1', kart turns to the right as stepper motor phases go from 1 to 4<br />
|-<br />
| 2<br />
| End sensor is on left side<br />
| If '1', the angles are measured clockwise.<br />
|}<br />
<br />
The end sensor always defines position 0. Angles are always positive.<br />
<br />
If bits 1 and 2 are different, the stepper motor phase sequence has to be inverted.<br />
<br />
[[Category:Kart]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/Kart/serial_linkKart/serial link2014-06-11T12:16:56Z<p>Cof: /* Kart to SmartPhone */</p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
== Serial link protocol ==<br />
<br />
This section defines the serial link protocol used to communicate between the Kart and the SmartPhone. All data is spontaneous send and can not be polled.<br />
<br />
=== Serial port===<br />
<br />
Communication is done with:<br />
* 115200 baud<br />
* 8 bits<br />
* no parity<br />
* no handshake<br />
<br />
=== Message Format ===<br />
<br />
{| cellpadding="8" cellspacing="0" border="1"<br />
! SoF (1 byte)<br />
! Address (1 byte)<br />
! Data (2 bytes)<br />
! EoF (1 byte)<br />
|-<br />
| 0x55<br />
| UINT8<br />
| UINT16/INT16<br />
| 0xAA<br />
|}<br />
<br />
== Registers ==<br />
<br />
=== SmartPhone to Kart ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Datatype<br />
! Description<br />
|-<br />
| 0<br />
| UINT16<br />
| DC motor PWM period<br />
|-<br />
| 1<br />
| INT5<br />
| DC motor speed: -15 to 15 (Negative numbers = backwards)<br />
|-<br />
| 2<br />
| UINT16<br />
| stepper motor period (speed proportional to 1/period)<br />
|-<br />
| 3<br />
| UINT16<br />
| Desired Steering Angle<br />
|-<br />
| 3<br />
| UINT16<br />
| LEDs<br />
|-<br />
| 5<br />
| UINT16<br />
| Hardware orientation<br />
|-<br />
| 30<br />
| UINT16<br />
| Serial link update interval [ms]<br />
|}<br />
<br />
=== Kart to SmartPhone ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Datatype<br />
! Description<br />
|-<br />
| 0<br />
| UINT16<br />
| Hall speed count 1<br />
|-<br />
| 1<br />
| UINT16<br />
| Hall speed count 2<br />
|-<br />
| 2<br />
| UINT1<br />
| Steering status: 0x01 means angle reached<br />
|-<br />
| 3<br />
| UINT16<br />
| Actual Steering Angle<br />
|-<br />
| 4<br />
| UINT1<br />
| Stepper End (bit is '0' when end switch is pressed)<br />
|-<br />
| 5<br />
| UINT16<br />
| ADC Value of the Battery Voltage Level<br />
|-<br />
|<br />
|<br />
|<br />
|-<br />
| 16<br />
| UINT16<br />
| Ambient Light 1<br />
|-<br />
| 17<br />
| UINT16<br />
| Ambient Light 2<br />
|-<br />
| 18<br />
| UINT16<br />
| Ambient Light 3<br />
|-<br />
| 19<br />
| UINT16<br />
| Ambient Light 4<br />
|-<br />
| 20<br />
| UINT16<br />
| Distance 1<br />
|-<br />
| 21<br />
| UINT16<br />
| Distance 2<br />
|-<br />
| 22<br />
| UINT16<br />
| Distance 3<br />
|-<br />
| 23<br />
| UINT16<br />
| Distance 4<br />
|}<br />
<br />
=== Hardware orientation ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Bit<br />
! Meaning<br />
! Description<br />
|-<br />
| 0<br />
| Kart goes as DC motor<br />
| When '0', the kart goes backwards when the motor turns forwards<br />
|-<br />
| 1<br />
| Kart turns right (clockwise)<br />
| When '1', kart turns to the right as stepper motor phases go from 1 to 4<br />
|-<br />
| 2<br />
| End sensor is on left side<br />
| If '1', the angles are measured clockwise.<br />
|}<br />
<br />
The end sensor always defines position 0. Angles are always positive.<br />
<br />
If bits 1 and 2 are different, the stepper motor phase sequence has to be inverted.<br />
<br />
[[Category:Kart]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/Kart/I2C_linkKart/I2C link2014-06-10T14:53:09Z<p>Cof: /* Data registers */</p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
<br />
== I2C link protocol ==<br />
<br />
This section defines the I2C link protocol used to communicate between the serial link interface and the different components of the kart.<br />
<br />
=== I2C frames ===<br />
<br />
The protocol consists of a repeated polling. At a rate of 1 kHz, the I2C master:<br />
* first sends all control values on the bus<br />
* then requests all component data values on the bus<br />
<br />
=== Register map ===<br />
<br />
The I2C registers are 8 bit.<br />
The RS232 frames define 16 bit values.<br />
So each control and data value uses 2 I2C addresses.<br />
<br />
==== Control registers ====<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Block<br />
! Name<br />
! Initial value (hex.)<br />
! Description<br />
|-<br />
| 0<br />
| rowspan="2"|DC Motor<br />
| PWM divider<br />
| 0040<br />
| divider value from the clock frequency to the PWM step enable<br />
|-<br />
| 2<br />
| speed<br />
| 0000<br />
| DC motor speed (Negative numbers = backwards, positive numbers = forwards)<br />
|-<br />
| 4<br />
| rowspan="3"|Stepper Motor<br />
| stepper divider<br />
| 0100<br />
| divider value from the clock frequency to the stepper motor step period<br />
|-<br />
| 6<br />
| target angle<br />
| TBD<br />
| Stepper motor target angle (zero is stepper end sensor, values are positive only)<br />
|-<br />
| 8<br />
| end switch address<br />
| 0004<br />
| Specifies the address at which the end switch is read at bit 0 (if it isn't local)<br />
|-<br />
| 10<br />
| Kart<br />
| hardware control<br />
| 0007<br />
| see below<br />
|-<br />
| 12<br />
| LEDs<br />
| LEDs<br />
| 0000<br />
| Led controls<br />
|-<br />
| 30<br />
| Controller<br />
| update period<br />
| 0040<br />
| number of milliseconds between two status messages on serial port<br />
|}<br />
<br />
The hardware control register is given as:<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Bits<br />
! Name<br />
! Function<br />
|-<br />
| 15:5<br />
| <br />
| TBD<br />
|-<br />
| 4<br />
| restart<br />
| Puts all slaves back in startup mode.<br />
|-<br />
| 3<br />
| stepper end<br />
| Emulates a stepper end switch, but is sent by the master. Will be "ORed" with the stepper motor's specific end switch.<br />
|-<br />
| 2:0<br />
| [[Kart/serial_link#Hardware_orientation|hardware orientation]]<br />
| Defines how the motor rotations are linked to the kart displacements<br />
|}<br />
<br />
==== Data registers ====<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Block<br />
! Name<br />
! Description<br />
|-<br />
| 0<br />
| rowspan="2" | Sensors<br />
| Hall sensor 1<br />
| Pulse count<br />
|-<br />
| 2<br />
| Hall sensor 2<br />
| Pulse count<br />
|-<br />
| 4<br />
| rowspan="3" | Stepper Motor<br />
| stepper status<br />
| bit 0: stepper end when '0' <br> bit 1: position reached<br />
|-<br />
| 6<br />
| stepper angle<br />
| Actual stepper motor angle<br />
|-<br />
| 8 || ||<br />
|-<br />
| 10<br />
| Power supply<br />
| ADC value<br />
| Value read from the ADC measuring the battery voltage<br />
|-<br />
| 12<br />
| Sensors<br />
| Proximity sensors<br />
|<br />
|}</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/Kart/I2C_linkKart/I2C link2014-06-10T12:50:43Z<p>Cof: /* Data registers */</p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
<br />
== I2C link protocol ==<br />
<br />
This section defines the I2C link protocol used to communicate between the serial link interface and the different components of the kart.<br />
<br />
=== I2C frames ===<br />
<br />
The protocol consists of a repeated polling. At a rate of 1 kHz, the I2C master:<br />
* first sends all control values on the bus<br />
* then requests all component data values on the bus<br />
<br />
=== Register map ===<br />
<br />
The I2C registers are 8 bit.<br />
The RS232 frames define 16 bit values.<br />
So each control and data value uses 2 I2C addresses.<br />
<br />
==== Control registers ====<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Block<br />
! Name<br />
! Initial value (hex.)<br />
! Description<br />
|-<br />
| 0<br />
| rowspan="2"|DC Motor<br />
| PWM divider<br />
| 0040<br />
| divider value from the clock frequency to the PWM step enable<br />
|-<br />
| 2<br />
| speed<br />
| 0000<br />
| DC motor speed (Negative numbers = backwards, positive numbers = forwards)<br />
|-<br />
| 4<br />
| rowspan="3"|Stepper Motor<br />
| stepper divider<br />
| 0100<br />
| divider value from the clock frequency to the stepper motor step period<br />
|-<br />
| 6<br />
| target angle<br />
| TBD<br />
| Stepper motor target angle (zero is stepper end sensor, values are positive only)<br />
|-<br />
| 8<br />
| end switch address<br />
| 0004<br />
| Specifies the address at which the end switch is read at bit 0 (if it isn't local)<br />
|-<br />
| 10<br />
| Kart<br />
| hardware control<br />
| 0007<br />
| see below<br />
|-<br />
| 12<br />
| LEDs<br />
| LEDs<br />
| 0000<br />
| Led controls<br />
|-<br />
| 30<br />
| Controller<br />
| update period<br />
| 0040<br />
| number of milliseconds between two status messages on serial port<br />
|}<br />
<br />
The hardware control register is given as:<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Bits<br />
! Name<br />
! Function<br />
|-<br />
| 15:5<br />
| <br />
| TBD<br />
|-<br />
| 4<br />
| restart<br />
| Puts all slaves back in startup mode.<br />
|-<br />
| 3<br />
| stepper end<br />
| Emulates a stepper end switch, but is sent by the master. Will be "ORed" with the stepper motor's specific end switch.<br />
|-<br />
| 2:0<br />
| [[Kart/serial_link#Hardware_orientation|hardware orientation]]<br />
| Defines how the motor rotations are linked to the kart displacements<br />
|}<br />
<br />
==== Data registers ====<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Block<br />
! Name<br />
! Description<br />
|-<br />
| 4<br />
| rowspan="3"|Stepper Motor<br />
| stepper status<br />
| bit 0: stepper end when '0' <br> bit 1: position reached<br />
|-<br />
| 6<br />
| stepper angle<br />
| Actual stepper motor angle<br />
|-<br />
| 8 || ||<br />
|-<br />
| 10<br />
| Power supply<br />
| ADC value<br />
| Value read from the ADC measuring the battery voltage<br />
|-<br />
| 12<br />
| Sensors<br />
| Hall sensors<br />
| Hall sensors pulse count<br />
|}</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/Kart/I2C_linkKart/I2C link2014-06-10T12:49:28Z<p>Cof: /* Control registers */</p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
<br />
== I2C link protocol ==<br />
<br />
This section defines the I2C link protocol used to communicate between the serial link interface and the different components of the kart.<br />
<br />
=== I2C frames ===<br />
<br />
The protocol consists of a repeated polling. At a rate of 1 kHz, the I2C master:<br />
* first sends all control values on the bus<br />
* then requests all component data values on the bus<br />
<br />
=== Register map ===<br />
<br />
The I2C registers are 8 bit.<br />
The RS232 frames define 16 bit values.<br />
So each control and data value uses 2 I2C addresses.<br />
<br />
==== Control registers ====<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Block<br />
! Name<br />
! Initial value (hex.)<br />
! Description<br />
|-<br />
| 0<br />
| rowspan="2"|DC Motor<br />
| PWM divider<br />
| 0040<br />
| divider value from the clock frequency to the PWM step enable<br />
|-<br />
| 2<br />
| speed<br />
| 0000<br />
| DC motor speed (Negative numbers = backwards, positive numbers = forwards)<br />
|-<br />
| 4<br />
| rowspan="3"|Stepper Motor<br />
| stepper divider<br />
| 0100<br />
| divider value from the clock frequency to the stepper motor step period<br />
|-<br />
| 6<br />
| target angle<br />
| TBD<br />
| Stepper motor target angle (zero is stepper end sensor, values are positive only)<br />
|-<br />
| 8<br />
| end switch address<br />
| 0004<br />
| Specifies the address at which the end switch is read at bit 0 (if it isn't local)<br />
|-<br />
| 10<br />
| Kart<br />
| hardware control<br />
| 0007<br />
| see below<br />
|-<br />
| 12<br />
| LEDs<br />
| LEDs<br />
| 0000<br />
| Led controls<br />
|-<br />
| 30<br />
| Controller<br />
| update period<br />
| 0040<br />
| number of milliseconds between two status messages on serial port<br />
|}<br />
<br />
The hardware control register is given as:<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Bits<br />
! Name<br />
! Function<br />
|-<br />
| 15:5<br />
| <br />
| TBD<br />
|-<br />
| 4<br />
| restart<br />
| Puts all slaves back in startup mode.<br />
|-<br />
| 3<br />
| stepper end<br />
| Emulates a stepper end switch, but is sent by the master. Will be "ORed" with the stepper motor's specific end switch.<br />
|-<br />
| 2:0<br />
| [[Kart/serial_link#Hardware_orientation|hardware orientation]]<br />
| Defines how the motor rotations are linked to the kart displacements<br />
|}<br />
<br />
==== Data registers ====<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Block<br />
! Name<br />
! Description<br />
|-<br />
| 4<br />
| rowspan="3"|Stepper Motor<br />
| stepper status<br />
| bit 0: stepper end when '0' <br> bit 1: position reached<br />
|-<br />
| 6<br />
| stepper angle<br />
| Actual stepper motor angle<br />
|-<br />
| 8 || ||<br />
|-<br />
| 10<br />
| Power supply<br />
| ADC value<br />
| Value read from the ADC measuring the battery voltage<br />
|}</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/Kart/sensors/VCNL4000Kart/sensors/VCNL40002014-06-10T11:55:39Z<p>Cof: /* I2C communication */</p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
== Ambient light sensor ==<br />
VCNL4000 is a fully integrated proximity and ambient light digital 16 bit resolution sensor in a miniature lead less package (LLP) for surface mounting.<br />
It includes a signal processing IC and supports an easy to use I2C bus communication interface.<br />
<br />
Datasheet on Farnell: http://www.vishay.com/docs/83798/vcnl4000.pdf<br />
<br />
* Manufacturer: '''VISHAY'''<br />
* Farnell: '''1870777'''<br />
* Manufacturer Desc: '''VCNL4000-GS08'''<br />
<br />
== I2C communication ==<br />
<br />
The chip I2C address is <code>26</code><sub>h</sub>.<br />
The address is fixed so there is no direct way to connect several distance sensors on the same I2C bus.<br />
<br />
For reading out 2 (or more) subsequent registers like the result registers, it is not necessary to address each of the registers separately.<br />
After one read command the internal register counter is increased automatically and any subsequent read command is accessing the next register.<br />
<br />
The maximal <code>SCL</code> clock rate is 3.4&nbsp;MHz.<br />
<br />
=== Registers ===<br />
<br />
The registers are:<br />
<br />
{| cellpadding="3" cellspacing="0" border="1"<br />
! Address<br />
! access<br />
! register<br />
|-<br />
| 0x80<br />
| R/W<br />
| command<br />
|-<br />
| 0x81<br />
| R<br />
| product and revision id<br />
|-<br />
| 0x82<br />
|<br />
| <unsused><br />
|-<br />
| 0x83<br />
| R/W<br />
| LED current<br />
|-<br />
| 0x84<br />
| R/W<br />
| acquisition parameters<br />
|-<br />
| 0x85<br />
| R<br />
| ambient light H<br />
|-<br />
| 0x86<br />
| R<br />
| ambient light L<br />
|-<br />
| 0x87<br />
| R<br />
| proximity H<br />
|-<br />
| 0x88<br />
| R<br />
| proximity L<br />
|-<br />
| 0x89<br />
| R/W<br />
| acquisition frequency<br />
|-<br />
| 0x8A<br />
| R/W<br />
| acquisition timings<br />
|}<br />
<br />
=== System setup ===<br />
<br />
The system setup is done by writing to the different control registers:<br />
[start] 0x26 0x83 0x14 0x08 [stop] # LED current=200mA, no auto-conversion, auto-offset-compensation, averaging 128 measures.<br />
[start] 0x26 0x89 0x03 0x81 [stop] # Distance measure frequency is 390.625 kHz, delay time is 4 and dead time 1.<br />
<code>26</code><sub>h</sub> is the chip's address <code>13</code><sub>h</sub> followed by a <code>0</code><sub>b</sub> for write access.<br />
It is followed by the register address and by the data bytes.<br />
Commands with multiple data bytes allow to write data into sequential registers.<br />
<br />
=== Reading data form the sensor ===<br />
<br />
==== Read ambient light ====<br />
<br />
Read ambient light (data values in hex):<br />
[start] 26 80 10 [stop] # Start measure.<br />
[start] 26 80 [start] 27 FF [stop] # Do this as long as received value and 40h is 0.<br />
[start] 26 85 [start] 27 FF FF [stop] # Read the data from the two registers.<br />
<code>26</code><sub>h</sub> is the chip's address <code>13</code><sub>h</sub> followed by a <code>0</code><sub>b</sub> for write access.<br />
<code>85</code><sub>h</sub> is the base register address for the ambient light.<br />
<code>27</code><sub>h</sub> is the chip's address <code>13</code><sub>h</sub> followed by a <code>1</code><sub>b</sub> for read access.<br />
The sensor will pull down the <code>SDA</code> line during the <code>FF</code><sub>h</sub> bytes to answer to the request.<br />
<br />
When reading multiple bytes, the master has to pull <code>ACK</code> low between the <code>FF</code><sub>h</sub> words.<br />
<br />
==== Read distance ====<br />
<br />
Read distance (data values in hex):<br />
[start] 26 80 08 [stop] # Start measure.<br />
[start] 26 80 [start] 27 FF [stop] # Do this as long as received value and 20h is 0.<br />
[start] 26 87 [start] 27 FF FF [stop] # Read the data from the two registers.<br />
The command is the same as for ambient light, only the base register address changes.<br />
<br />
Note: the returned value corresponds to something like the inverse of the distance (datasheet, figure 3, page 3).<br />
Long distances give something like <code>0600</code><sub>h</sub>,<br />
5 cm gives something like <code>0800</code><sub>h</sub>,<br />
and close to zero can reach more than <code>8000</code><sub>h</sub>.<br />
<br />
==== Read ambient light and distance ====<br />
<br />
Read both ambient light and distance (data values in hex):<br />
[start] 26 80 18 [stop] # Start measure.<br />
[start] 26 80 [start] 27 FF [stop] # Do this as long as received value and 20h is 0.<br />
[start] 26 87 [start] 27 FF FF FF FF [stop] # Read the data from the two registers.<br />
The command is the same as for ambient light, only the base register address changes.<br />
<br />
== Kart PCB pins ==<br />
<br />
=== FPGA board connector ===<br />
<br />
The free pins towards the ex remote control board are:<br />
<br />
{| cellpadding="3" cellspacing="0" border="1"<br />
! Conn. pin<br />
! prev. fct<br />
! new fct<br />
|-<br />
| A1<br />
| j. left<br />
| SCL<br />
|-<br />
| A2<br />
| j. right<br />
| SDA1<br />
|-<br />
| A4<br />
| j. toggle<br />
| SDA2<br />
|-<br />
| A6<br />
| j. back<br />
| hall1<br />
|-<br />
| A8<br />
| j. fwd<br />
| hall2<br />
|}<br />
<br />
=== FPGA pinout ===<br />
<br />
The FPGA pinout is:<br />
<br />
{| cellpadding="3" cellspacing="0" border="1"<br />
! function<br />
! conn.<br />
! FPGA<br />
|-<br />
| SCL<br />
| A1<br />
| 57<br />
|-<br />
| SDA1<br />
| A2<br />
| 58<br />
|-<br />
| SDA2<br />
| A4<br />
| 60<br />
|-<br />
| hall1<br />
| A6<br />
| 62<br />
|-<br />
| hall2<br />
| A8<br />
| 64<br />
|-<br />
| VSS<br />
| A26<br />
| <br />
|-<br />
| VDD<br />
| A24<br />
| <br />
|}<br />
<br />
[[Category:Kart]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/Kart/battery_levelKart/battery level2014-06-10T11:44:24Z<p>Cof: /* ADC */</p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
== ADC ==<br />
<br />
The ADC on the power supply board is a 16-bit 15SPS I2C [[media:MCP3425.pdf|MCP3425]].<br />
<br />
It is read by sending ''start'', D1, FF, FF, ''stop''.<br />
The I2C master has to acknowledge all data bytes (FF) except for the last one.<br />
<br />
The control register is written by sending ''start'', D0, 14, ''stop''.<br />
Value 14 means:<br />
* continuous conversion<br />
* 16 bit resolution (15 SPS)<br />
* unity gain (1V/V)<br />
<br />
[[Category:Kart]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/Kart/battery_levelKart/battery level2014-06-10T11:44:04Z<p>Cof: /* PIC 18F2525 MCU as ADC Converter */</p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
== ADC ==<br />
<br />
The ADC on the power supply board is a 16-bit 15SPS I2C [[media:MCP3425.pdf|MCP3425]].<br />
<br />
It is read by sending ''start'', D1, FF, FF, ''stop''.<br />
The I2C master has to acknowledge all data bytes (FF) except for the last one.<br />
<br />
The control register is written by sending ''start'', D0, 14, ''stop''.<br />
Value 14 means<br />
* continuous conversion<br />
* 16 bit resolution (15 SPS)<br />
* unity gain (1V/V)<br />
<br />
[[Category:Kart]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/File:MCP3425.pdfFile:MCP3425.pdf2014-06-10T11:33:16Z<p>Cof: Kart: ADC for battery level monitoring</p>
<hr />
<div>Kart: ADC for battery level monitoring</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/Kart/toDoKart/toDo2014-06-10T11:28:51Z<p>Cof: /* To do */</p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
<br />
== To do ==<br />
<br />
* SDA pull-up on one FPGA board (holder pins)<br />
* end of turning switch -> stepper motor board<br />
* diodes for lights (current control)<br />
* registers:<br />
** stepper motor restart (go to stepper end)<br />
** set stepper end from master (software stepper end)<br />
<br />
Reaching the end sensor must be made after connection to the kart,<br />
because the hardware orientation bits have to be set properly.<br />
<br />
== Boards ==<br />
* Switch and 3.3V DC/DC and ADC board for power supply<br />
* Connector for (many) user LEDs<br />
<br />
* Distance sensor electronics in stepper motor FPGA?<br />
* Hall sensor counter(s) in DC motor FPGA?<br />
<br />
=== Stepper Motor ===<br />
* Test Mode pin to dedicated input?<br />
* Motor Resistances get too hot<br />
** Use a PWM on the coils<br />
** Detect step having been made<br />
<br />
== Debug Boards ==<br />
* Vertical header connectors without casing<br />
<br />
=== Stepper Motor ===<br />
* Test Mode Switch: mark on/off position</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/Kart/professorKart/professor2014-06-10T11:27:47Z<p>Cof: /* FPGA boards */</p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
<br />
== FPGA boards ==<br />
<br />
The FPGA modules use MicroSemi [http://www.actel.com/products/igloo/ IGLOO] low-power FPGAs.<br />
<br />
The boards have been designed for AGL125 in a VQ100 package.<br />
However, it is possible to mount the following devices with the same package on that board:<br />
* AGL060: 1'536 VersaTiles, 4 4'608-bit RAMs<br />
* AGL125: 3'072 VersaTiles, 8 4'608-bit RAMs<br />
* AGL250: 6'144 VersaTiles, 8 4'608-bit RAMs<br />
One VersaTile can implement a 3-input combinatorial function or an E-flipflop.<br />
<br />
=== Pin Compatibility ===<br />
As a simple compatibility rule for these devices, one should use:<br />
* pins 43, 60, 93 and 94 for I/Os but not as a clock inputs<br />
* pin 99 tied to GNDQ<br />
* pin 100 tied to VMV0 (3.3 V)<br />
<br />
=== Global Clock Networks ===<br />
Note that pin names starting with '''GF''' and '''GC''' are associated with the chip global networks, and GA, GB, GD, and GE are used for quadrant global networks.<br />
<br />
In case of the AGL060 - AGL250 the following pins are truly Global Clocks.<br />
* pins 10, 11, 13, 15, 16 for Network GF<br />
* pins 61, 62, 63, 64, 65 for Network GC</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/Kart/I2C_linkKart/I2C link2014-06-10T09:13:17Z<p>Cof: /* Data registers */</p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
<br />
== I2C link protocol ==<br />
<br />
This section defines the I2C link protocol used to communicate between the serial link interface and the different components of the kart.<br />
<br />
=== I2C frames ===<br />
<br />
The protocol consists of a repeated polling. At a rate of 1 kHz, the I2C master:<br />
* first sends all control values on the bus<br />
* then requests all component data values on the bus<br />
<br />
=== Register map ===<br />
<br />
The I2C registers are 8 bit.<br />
The RS232 frames define 16 bit values.<br />
So each control and data value uses 2 I2C addresses.<br />
<br />
==== Control registers ====<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Block<br />
! Name<br />
! Initial value (hex.)<br />
! Description<br />
|-<br />
| 0<br />
| rowspan="2"|DC Motor<br />
| PWM divider<br />
| 0040<br />
| divider value from the clock frequency to the PWM step enable<br />
|-<br />
| 2<br />
| speed<br />
| 0000<br />
| DC motor speed (Negative numbers = backwards, positive numbers = forwards)<br />
|-<br />
| 4<br />
| rowspan="3"|Stepper Motor<br />
| stepper divider<br />
| 0100<br />
| divider value from the clock frequency to the stepper motor step period<br />
|-<br />
| 6<br />
| target angle<br />
| TBD<br />
| Stepper motor target angle (zero is stepper end sensor, values are positive only)<br />
|-<br />
| 8<br />
| end switch address<br />
| 0004<br />
| Specifies the address at which the end switch is read at bit 0 (if it isn't local)<br />
|-<br />
| 10<br />
| Kart<br />
| hardware control<br />
| 0007<br />
| see below<br />
|-<br />
| 30<br />
| Controller<br />
| update period<br />
| 0040<br />
| number of milliseconds between two status messages on serial port<br />
|}<br />
<br />
The hardware control register is given as:<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Bits<br />
! Name<br />
! Function<br />
|-<br />
| 15:5<br />
| <br />
| TBD<br />
|-<br />
| 4<br />
| restart<br />
| Puts all slaves back in startup mode.<br />
|-<br />
| 3<br />
| stepper end<br />
| Emulates a stepper end switch, but is sent by the master. Will be "ORed" with the stepper motor's specific end switch.<br />
|-<br />
| 2:0<br />
| [[Kart/serial_link#Hardware_orientation|hardware orientation]]<br />
| Defines how the motor rotations are linked to the kart displacements<br />
|}<br />
<br />
==== Data registers ====<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Block<br />
! Name<br />
! Description<br />
|-<br />
| 4<br />
| rowspan="3"|Stepper Motor<br />
| stepper status<br />
| bit 0: stepper end when '0' <br> bit 1: position reached<br />
|-<br />
| 6<br />
| stepper angle<br />
| Actual stepper motor angle<br />
|-<br />
| 8 || ||<br />
|-<br />
| 10<br />
| Power supply<br />
| ADC value<br />
| Value read from the ADC measuring the battery voltage<br />
|}</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/Kart/serial_linkKart/serial link2014-06-10T09:08:39Z<p>Cof: /* SmartPhone to Kart */</p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
== Serial link protocol ==<br />
<br />
This section defines the serial link protocol used to communicate between the Kart and the SmartPhone. All data is spontaneous send and can not be polled.<br />
<br />
=== Serial port===<br />
<br />
Communication is done with:<br />
* 115200 baud<br />
* 8 bits<br />
* no parity<br />
* no handshake<br />
<br />
=== Message Format ===<br />
<br />
{| cellpadding="8" cellspacing="0" border="1"<br />
! SoF (1 byte)<br />
! Address (1 byte)<br />
! Data (2 bytes)<br />
! EoF (1 byte)<br />
|-<br />
| 0x55<br />
| UINT8<br />
| UINT16/INT16<br />
| 0xAA<br />
|}<br />
<br />
== Registers ==<br />
<br />
=== SmartPhone to Kart ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Datatype<br />
! Description<br />
|-<br />
| 0<br />
| UINT16<br />
| DC motor PWM period<br />
|-<br />
| 1<br />
| INT5<br />
| DC motor speed: -15 to 15 (Negative numbers = backwards)<br />
|-<br />
| 2<br />
| UINT16<br />
| stepper motor period (speed proportional to 1/period)<br />
|-<br />
| 3<br />
| UINT16<br />
| Desired Steering Angle<br />
|-<br />
| 3<br />
| UINT16<br />
| LEDs<br />
|-<br />
| 5<br />
| UINT16<br />
| Hardware orientation<br />
|-<br />
| 30<br />
| UINT16<br />
| Serial link update interval [ms]<br />
|}<br />
<br />
=== Kart to SmartPhone ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Datatype<br />
! Description<br />
|-<br />
| 2<br />
| UINT1<br />
| Steering status: 0x01 means angle reached<br />
|-<br />
| 3<br />
| UINT16<br />
| Actual Steering Angle<br />
|-<br />
| 4<br />
| UINT1<br />
| Stepper End (bit is '0' when end switch is pressed)<br />
|-<br />
| 5<br />
| UINT16<br />
| ADC Value of the Battery Voltage Level<br />
|-<br />
|<br />
|<br />
|<br />
|-<br />
| 16<br />
| UINT16<br />
| Ambient Light 1<br />
|-<br />
| 17<br />
| UINT16<br />
| Ambient Light 2<br />
|-<br />
| 18<br />
| UINT16<br />
| Ambient Light 3<br />
|-<br />
| 19<br />
| UINT16<br />
| Ambient Light 4<br />
|-<br />
| 20<br />
| UINT16<br />
| Distance 1<br />
|-<br />
| 21<br />
| UINT16<br />
| Distance 2<br />
|-<br />
| 22<br />
| UINT16<br />
| Distance 3<br />
|-<br />
| 23<br />
| UINT16<br />
| Distance 4<br />
|-<br />
| 24<br />
| UINT16<br />
| Hall Sensor Counter 1<br />
|-<br />
| 25<br />
| UINT16<br />
| Hall Sensor Counter 1<br />
|-<br />
| 26<br />
| UINT16<br />
| Hall Sensor Counter 3<br />
|-<br />
| 27<br />
| UINT16<br />
| Hall Sensor Counter 4<br />
|-<br />
| 28<br />
| UINT16<br />
| Hall Sensor Counter 5<br />
|}<br />
<br />
=== Hardware orientation ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Bit<br />
! Meaning<br />
! Description<br />
|-<br />
| 0<br />
| Kart goes as DC motor<br />
| When '0', the kart goes backwards when the motor turns forwards<br />
|-<br />
| 1<br />
| Kart turns right (clockwise)<br />
| When '1', kart turns to the right as stepper motor phases go from 1 to 4<br />
|-<br />
| 2<br />
| End sensor is on left side<br />
| If '1', the angles are measured clockwise.<br />
|}<br />
<br />
The end sensor always defines position 0. Angles are always positive.<br />
<br />
If bits 1 and 2 are different, the stepper motor phase sequence has to be inverted.<br />
<br />
[[Category:Kart]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/Kart/serial_linkKart/serial link2014-06-10T09:07:16Z<p>Cof: /* Kart to SmartPhone */</p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
== Serial link protocol ==<br />
<br />
This section defines the serial link protocol used to communicate between the Kart and the SmartPhone. All data is spontaneous send and can not be polled.<br />
<br />
=== Serial port===<br />
<br />
Communication is done with:<br />
* 115200 baud<br />
* 8 bits<br />
* no parity<br />
* no handshake<br />
<br />
=== Message Format ===<br />
<br />
{| cellpadding="8" cellspacing="0" border="1"<br />
! SoF (1 byte)<br />
! Address (1 byte)<br />
! Data (2 bytes)<br />
! EoF (1 byte)<br />
|-<br />
| 0x55<br />
| UINT8<br />
| UINT16/INT16<br />
| 0xAA<br />
|}<br />
<br />
== Registers ==<br />
<br />
=== SmartPhone to Kart ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Datatype<br />
! Description<br />
|-<br />
| 0<br />
| INT16<br />
| DC motor PWM period<br />
|-<br />
| 1<br />
| INT8<br />
| DC motor speed: -15 to 15 (Negative numbers = backwards)<br />
|-<br />
| 2<br />
| UINT16<br />
| stepper motor period (speed proportional to 1/period)<br />
|-<br />
| 3<br />
| UINT16<br />
| Desired Steering Angle<br />
|-<br />
| 3<br />
| UINT16<br />
| LEDs<br />
|-<br />
| 5<br />
| UINT16<br />
| Hardware orientation<br />
|-<br />
| 30<br />
| UINT16<br />
| Serial link update interval [ms]<br />
|}<br />
<br />
=== Kart to SmartPhone ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Datatype<br />
! Description<br />
|-<br />
| 2<br />
| UINT1<br />
| Steering status: 0x01 means angle reached<br />
|-<br />
| 3<br />
| UINT16<br />
| Actual Steering Angle<br />
|-<br />
| 4<br />
| UINT1<br />
| Stepper End (bit is '0' when end switch is pressed)<br />
|-<br />
| 5<br />
| UINT16<br />
| ADC Value of the Battery Voltage Level<br />
|-<br />
|<br />
|<br />
|<br />
|-<br />
| 16<br />
| UINT16<br />
| Ambient Light 1<br />
|-<br />
| 17<br />
| UINT16<br />
| Ambient Light 2<br />
|-<br />
| 18<br />
| UINT16<br />
| Ambient Light 3<br />
|-<br />
| 19<br />
| UINT16<br />
| Ambient Light 4<br />
|-<br />
| 20<br />
| UINT16<br />
| Distance 1<br />
|-<br />
| 21<br />
| UINT16<br />
| Distance 2<br />
|-<br />
| 22<br />
| UINT16<br />
| Distance 3<br />
|-<br />
| 23<br />
| UINT16<br />
| Distance 4<br />
|-<br />
| 24<br />
| UINT16<br />
| Hall Sensor Counter 1<br />
|-<br />
| 25<br />
| UINT16<br />
| Hall Sensor Counter 1<br />
|-<br />
| 26<br />
| UINT16<br />
| Hall Sensor Counter 3<br />
|-<br />
| 27<br />
| UINT16<br />
| Hall Sensor Counter 4<br />
|-<br />
| 28<br />
| UINT16<br />
| Hall Sensor Counter 5<br />
|}<br />
<br />
=== Hardware orientation ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Bit<br />
! Meaning<br />
! Description<br />
|-<br />
| 0<br />
| Kart goes as DC motor<br />
| When '0', the kart goes backwards when the motor turns forwards<br />
|-<br />
| 1<br />
| Kart turns right (clockwise)<br />
| When '1', kart turns to the right as stepper motor phases go from 1 to 4<br />
|-<br />
| 2<br />
| End sensor is on left side<br />
| If '1', the angles are measured clockwise.<br />
|}<br />
<br />
The end sensor always defines position 0. Angles are always positive.<br />
<br />
If bits 1 and 2 are different, the stepper motor phase sequence has to be inverted.<br />
<br />
[[Category:Kart]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/Kart/serial_linkKart/serial link2014-06-10T09:01:06Z<p>Cof: /* SmartPhone to Kart */</p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
== Serial link protocol ==<br />
<br />
This section defines the serial link protocol used to communicate between the Kart and the SmartPhone. All data is spontaneous send and can not be polled.<br />
<br />
=== Serial port===<br />
<br />
Communication is done with:<br />
* 115200 baud<br />
* 8 bits<br />
* no parity<br />
* no handshake<br />
<br />
=== Message Format ===<br />
<br />
{| cellpadding="8" cellspacing="0" border="1"<br />
! SoF (1 byte)<br />
! Address (1 byte)<br />
! Data (2 bytes)<br />
! EoF (1 byte)<br />
|-<br />
| 0x55<br />
| UINT8<br />
| UINT16/INT16<br />
| 0xAA<br />
|}<br />
<br />
== Registers ==<br />
<br />
=== SmartPhone to Kart ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Datatype<br />
! Description<br />
|-<br />
| 0<br />
| INT16<br />
| DC motor PWM period<br />
|-<br />
| 1<br />
| INT8<br />
| DC motor speed: -15 to 15 (Negative numbers = backwards)<br />
|-<br />
| 2<br />
| UINT16<br />
| stepper motor period (speed proportional to 1/period)<br />
|-<br />
| 3<br />
| UINT16<br />
| Desired Steering Angle<br />
|-<br />
| 3<br />
| UINT16<br />
| LEDs<br />
|-<br />
| 5<br />
| UINT16<br />
| Hardware orientation<br />
|-<br />
| 30<br />
| UINT16<br />
| Serial link update interval [ms]<br />
|}<br />
<br />
=== Kart to SmartPhone ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Datatype<br />
! Description<br />
|-<br />
| 8<br />
| UINT16<br />
| Actual Steering Angle<br />
|-<br />
| 9<br />
|UINT16<br />
| ADC Value of the Battery Voltage Level<br />
|-<br />
| 10<br />
|UINT1<br />
| Stepper End = 1<br />
|-<br />
|<br />
|<br />
|<br />
|-<br />
| 16<br />
|UINT16<br />
| Ambient Light 1<br />
|-<br />
| 17<br />
|UINT16<br />
| Ambient Light 2<br />
|-<br />
| 18<br />
|UINT16<br />
| Ambient Light 3<br />
|-<br />
| 19<br />
|UINT16<br />
| Ambient Light 4<br />
|-<br />
| 20<br />
|UINT16<br />
| Distance 1<br />
|-<br />
| 21<br />
|UINT16<br />
| Distance 2<br />
|-<br />
| 22<br />
|UINT16<br />
| Distance 3<br />
|-<br />
| 23<br />
|UINT16<br />
| Distance 4<br />
|-<br />
| 24<br />
|UINT16<br />
| Hall Sensor Counter 1<br />
|-<br />
| 25<br />
|UINT16<br />
| Hall Sensor Counter 1<br />
|-<br />
| 26<br />
|UINT16<br />
| Hall Sensor Counter 3<br />
|-<br />
| 27<br />
|UINT16<br />
| Hall Sensor Counter 4<br />
|-<br />
| 28<br />
|UINT16<br />
| Hall Sensor Counter 5<br />
|}<br />
<br />
=== Hardware orientation ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Bit<br />
! Meaning<br />
! Description<br />
|-<br />
| 0<br />
| Kart goes as DC motor<br />
| When '0', the kart goes backwards when the motor turns forwards<br />
|-<br />
| 1<br />
| Kart turns right (clockwise)<br />
| When '1', kart turns to the right as stepper motor phases go from 1 to 4<br />
|-<br />
| 2<br />
| End sensor is on left side<br />
| If '1', the angles are measured clockwise.<br />
|}<br />
<br />
The end sensor always defines position 0. Angles are always positive.<br />
<br />
If bits 1 and 2 are different, the stepper motor phase sequence has to be inverted.<br />
<br />
[[Category:Kart]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/Kart/serial_linkKart/serial link2014-06-10T08:58:57Z<p>Cof: /* Register Map */</p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
== Serial link protocol ==<br />
<br />
This section defines the serial link protocol used to communicate between the Kart and the SmartPhone. All data is spontaneous send and can not be polled.<br />
<br />
=== Serial port===<br />
<br />
Communication is done with:<br />
* 115200 baud<br />
* 8 bits<br />
* no parity<br />
* no handshake<br />
<br />
=== Message Format ===<br />
<br />
{| cellpadding="8" cellspacing="0" border="1"<br />
! SoF (1 byte)<br />
! Address (1 byte)<br />
! Data (2 bytes)<br />
! EoF (1 byte)<br />
|-<br />
| 0x55<br />
| UINT8<br />
| UINT16/INT16<br />
| 0xAA<br />
|}<br />
<br />
== Registers ==<br />
<br />
=== SmartPhone to Kart ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Datatype<br />
! Description<br />
|-<br />
| 0<br />
| INT16<br />
| DC motor PWM period<br />
|-<br />
| 1<br />
| INT8<br />
| DC motor speed: -15 to 15 (Negative numbers = backwards)<br />
|-<br />
| 1<br />
| UINT16<br />
| Desired Steering Angle<br />
|-<br />
| 2<br />
| UINT16<br />
| stepper motor period (speed proportional to 1/period)<br />
|-<br />
| 3<br />
| UINT16<br />
| LEDs<br />
|-<br />
| 4<br />
| UINT16<br />
| Hardware orientation<br />
|-<br />
| 5<br />
| UINT16<br />
| Update interval [ms]<br />
|}<br />
<br />
=== Kart to SmartPhone ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Datatype<br />
! Description<br />
|-<br />
| 8<br />
| UINT16<br />
| Actual Steering Angle<br />
|-<br />
| 9<br />
|UINT16<br />
| ADC Value of the Battery Voltage Level<br />
|-<br />
| 10<br />
|UINT1<br />
| Stepper End = 1<br />
|-<br />
|<br />
|<br />
|<br />
|-<br />
| 16<br />
|UINT16<br />
| Ambient Light 1<br />
|-<br />
| 17<br />
|UINT16<br />
| Ambient Light 2<br />
|-<br />
| 18<br />
|UINT16<br />
| Ambient Light 3<br />
|-<br />
| 19<br />
|UINT16<br />
| Ambient Light 4<br />
|-<br />
| 20<br />
|UINT16<br />
| Distance 1<br />
|-<br />
| 21<br />
|UINT16<br />
| Distance 2<br />
|-<br />
| 22<br />
|UINT16<br />
| Distance 3<br />
|-<br />
| 23<br />
|UINT16<br />
| Distance 4<br />
|-<br />
| 24<br />
|UINT16<br />
| Hall Sensor Counter 1<br />
|-<br />
| 25<br />
|UINT16<br />
| Hall Sensor Counter 1<br />
|-<br />
| 26<br />
|UINT16<br />
| Hall Sensor Counter 3<br />
|-<br />
| 27<br />
|UINT16<br />
| Hall Sensor Counter 4<br />
|-<br />
| 28<br />
|UINT16<br />
| Hall Sensor Counter 5<br />
|}<br />
<br />
=== Hardware orientation ===<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Bit<br />
! Meaning<br />
! Description<br />
|-<br />
| 0<br />
| Kart goes as DC motor<br />
| When '0', the kart goes backwards when the motor turns forwards<br />
|-<br />
| 1<br />
| Kart turns right (clockwise)<br />
| When '1', kart turns to the right as stepper motor phases go from 1 to 4<br />
|-<br />
| 2<br />
| End sensor is on left side<br />
| If '1', the angles are measured clockwise.<br />
|}<br />
<br />
The end sensor always defines position 0. Angles are always positive.<br />
<br />
If bits 1 and 2 are different, the stepper motor phase sequence has to be inverted.<br />
<br />
[[Category:Kart]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/Kart/I2C_linkKart/I2C link2014-06-02T10:00:29Z<p>Cof: /* Control registers */</p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
<br />
== I2C link protocol ==<br />
<br />
This section defines the I2C link protocol used to communicate between the serial link interface and the different components of the kart.<br />
<br />
=== I2C frames ===<br />
<br />
The protocol consists of a repeated polling. At a rate of 1 kHz, the I2C master:<br />
* first sends all control values on the bus<br />
* then requests all component data values on the bus<br />
<br />
=== Register map ===<br />
<br />
The I2C registers are 8 bit.<br />
The RS232 frames define 16 bit values.<br />
So each control and data value uses 2 I2C addresses.<br />
<br />
==== Control registers ====<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Block<br />
! Name<br />
! Initial value (hex.)<br />
! Description<br />
|-<br />
| 0<br />
| rowspan="2"|DC Motor<br />
| PWM divider<br />
| 0040<br />
| divider value from the clock frequency to the PWM step enable<br />
|-<br />
| 2<br />
| speed<br />
| 0000<br />
| DC motor speed (Negative numbers = backwards, positive numbers = forwards)<br />
|-<br />
| 4<br />
| rowspan="3"|Stepper Motor<br />
| stepper divider<br />
| 0100<br />
| divider value from the clock frequency to the stepper motor step period<br />
|-<br />
| 6<br />
| target angle<br />
| TBD<br />
| Stepper motor target angle (zero is stepper end sensor, values are positive only)<br />
|-<br />
| 8<br />
| end switch address<br />
| 0004<br />
| Specifies the address at which the end switch is read at bit 0 (if it isn't local)<br />
|-<br />
| 10<br />
| Kart<br />
| hardware control<br />
| 0007<br />
| see below<br />
|-<br />
| 30<br />
| Controller<br />
| update period<br />
| 0040<br />
| number of milliseconds between two status messages on serial port<br />
|}<br />
<br />
The hardware control register is given as:<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Bits<br />
! Name<br />
! Function<br />
|-<br />
| 15:5<br />
| <br />
| TBD<br />
|-<br />
| 4<br />
| restart<br />
| Puts all slaves back in startup mode.<br />
|-<br />
| 3<br />
| stepper end<br />
| Emulates a stepper end switch, but is sent by the master. Will be "ORed" with the stepper motor's specific end switch.<br />
|-<br />
| 2:0<br />
| [[Kart/serial_link#Hardware_orientation|hardware orientation]]<br />
| Defines how the motor rotations are linked to the kart displacements<br />
|}<br />
<br />
==== Data registers ====<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Block<br />
! Name<br />
! Description<br />
|-<br />
| 4<br />
| rowspan="2"|Stepper Motor<br />
| stepper status<br />
| bit 0: stepper end when '0' <br> bit 1: position reached<br />
|-<br />
| 6<br />
| stepper angle<br />
| Actual stepper motor angle<br />
|}</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/Kart/I2C_linkKart/I2C link2014-05-26T07:05:12Z<p>Cof: /* Control registers */</p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
<br />
== I2C link protocol ==<br />
<br />
This section defines the I2C link protocol used to communicate between the serial link interface and the different components of the kart.<br />
<br />
=== I2C frames ===<br />
<br />
The protocol consists of a repeated polling. At a rate of 1 kHz, the I2C master:<br />
* first sends all control values on the bus<br />
* then requests all component data values on the bus<br />
<br />
=== Register map ===<br />
<br />
The I2C registers are 8 bit.<br />
The RS232 frames define 16 bit values.<br />
So each control and data value uses 2 I2C addresses.<br />
<br />
==== Control registers ====<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Block<br />
! Name<br />
! Initial value (hex.)<br />
! Description<br />
|-<br />
| 0<br />
| rowspan="2"|DC Motor<br />
| PWM divider<br />
| TBD<br />
| divider value from the clock frequency to the PWM step enable<br />
|-<br />
| 2<br />
| speed<br />
| TBD<br />
| DC motor speed (Negative numbers = backwards, positive numbers = forwards)<br />
|-<br />
| 4<br />
| rowspan="3"|Stepper Motor<br />
| stepper divider<br />
| 0100<br />
| divider value from the clock frequency to the stepper motor step period<br />
|-<br />
| 6<br />
| target angle<br />
| TBD<br />
| Stepper motor target angle (zero is stepper end sensor, values are positive only)<br />
|-<br />
| 8<br />
| end switch address<br />
| 0004<br />
| Specifies the address at which the end switch is read at bit 0 (if it isn't local)<br />
|-<br />
| 10<br />
| Kart<br />
| hardware control<br />
| 0007<br />
| see below<br />
|-<br />
| 30<br />
| Controller<br />
| update period<br />
| 0040<br />
| number of milliseconds between two status messages on serial port<br />
|}<br />
<br />
The hardware control register is given as:<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Bits<br />
! Name<br />
! Function<br />
|-<br />
| 15:5<br />
| <br />
| TBD<br />
|-<br />
| 4<br />
| restart<br />
| Puts all slaves back in startup mode.<br />
|-<br />
| 3<br />
| stepper end<br />
| Emulates a stepper end switch, but is sent by the master. Will be "ORed" with the stepper motor's specific end switch.<br />
|-<br />
| 2:0<br />
| [[Kart/serial_link#Hardware_orientation|hardware orientation]]<br />
| Defines how the motor rotations are linked to the kart displacements<br />
|}<br />
<br />
==== Data registers ====<br />
<br />
{| cellpadding="4" cellspacing="0" border="1"<br />
! Address<br />
! Block<br />
! Name<br />
! Description<br />
|-<br />
| 4<br />
| rowspan="2"|Stepper Motor<br />
| stepper status<br />
| bit 0: stepper end when '0' <br> bit 1: position reached<br />
|-<br />
| 6<br />
| stepper angle<br />
| Actual stepper motor angle<br />
|}</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/EMVs/AudioAmp/improvementsEMVs/AudioAmp/improvements2014-03-31T06:07:39Z<p>Cof: </p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
We should keep to the organisation in 3 labs, especially because of the noise.<br />
: &rarr; A201, A203a, A203b<br />
<br />
<br />
The loudspeakers need to be put in an enclosure.<br />
: &rarr; TBD, bld?<br />
<br />
<br />
A script should be organised for the automated synthesis and download of the FPGA design.<br />
: &rarr; TBD, guo?<br />
:: &rarr; will be done as soon as I have some spare time ''/guo''<br />
<br />
<br />
Add the VHDL shortform on the USB stick.<br />
: &rarr; cof<br />
<br />
<br />
The [[EMVs/AudioAmp/fr/specifications|wiki]] and the HTML file provided to the students on the USB stick must be identical<br />
: &rarr; cof synched wiki to HTML, and organised automatic retrieval from wiki to HTML.</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/EMVs/AudioAmp/improvementsEMVs/AudioAmp/improvements2014-03-24T07:48:18Z<p>Cof: </p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
We should keep to the organisation in 3 labs, especially because of the noise.<br />
: &rarr; A201, A203a, A203b<br />
<br />
<br />
The loudspeakers need to be put in an enclosure.<br />
: &rarr; TBD, bld?<br />
<br />
<br />
A script should be organised for the automated synthesis and download of the FPGA design.<br />
: &rarr; TBD, guo?<br />
<br />
<br />
The [[EMVs/AudioAmp/fr/specifications|wiki]] and the HTML file provided to the students on the USB stick must be identical<br />
: &rarr; cof synched wiki to HTML, and organised automatic retrieval from wiki to HTML.</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/EMVs/AudioAmp/improvementsEMVs/AudioAmp/improvements2014-03-24T07:41:13Z<p>Cof: Created page with "{{private}} {{TOC right}} We should keep to the organisation in 3 labs, especially because of the noise. : &rarr; A201, A203a, A203b The loudspeakers need to be put in an en..."</p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
We should keep to the organisation in 3 labs, especially because of the noise.<br />
: &rarr; A201, A203a, A203b<br />
<br />
<br />
The loudspeakers need to be put in an enclosure.<br />
: &rarr; TBD, bld?<br />
<br />
<br />
A script should be organised for the automated synthesis and download of the FPGA design.<br />
: &rarr; TBD, guo?<br />
<br />
<br />
The [[EMVs/AudioAmp/fr/specifications|wiki]] and the HTML file provided to the students on the USB stick must be identical<br />
: &rarr; cof synched wiki to HTML, and organised automatic retrieval from HTML to wiki.</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/EMVs/AudioAmpEMVs/AudioAmp2014-03-24T07:27:44Z<p>Cof: /* Organisation */</p>
<hr />
<div>{{TOC right}}<br />
<br />
The Audio amplifier project is a one day sneak preview of the electronics taught at the<br />
[http://electricite-mecanique.hevs.ch/ Industrial Systems] section of [http://www.hevs.edu/ HES-SO//Valais Wallis].<br />
As such, it presents a mixed analog/digital system.<br />
<br />
== Lab activity ==<br />
<br />
The system consists of:<br />
* an [http://wiki.hevs.ch/uit/index.php5/Hardware/Parallelport/Audio_ADC_DAC A/D converter] which receives an audio signal<br />
* a digital circuit ([http://wiki.hevs.ch/uit/index.php5/Hardware/FPGAEBS FPGA]) which mutiplies this signal by a gain and builds a Pulse Width Modulated (PWM) signal out of it<br />
* a class D amplifier which drives a loudspeaker from the PWM signal<br />
* a step-up circuit which generates a power supply voltage from a 12 V battery in order to have enough power to drive the loudspeaker<br />
<br />
The project is presented to the [http://www.emvs.ch/ EMVs] students.<br />
They are provided with [[EMVs/AudioAmp/fr/specifications|specifications in french]].<br />
<br />
== Organisation ==<br />
<br />
The system is developed based on [[EMVs/AudioAmp/boards|prototyping boards]] which are also used for other labs.<br />
<br />
Some specific lab [[EMVs/AudioAmp/material|material]] is required additionally to the base lab equipment.<br />
<br />
The day must be [[EMVs/AudioAmp/preparation|prepared]] with Lab files, USB sticks, etc.<br />
<br />
Some [[EMVs/AudioAmp/improvements|improvements]] are suggested for the years to come.<br />
<br />
[[Category:AudioAmp]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/EMVs/AudioAmp/fr/specificationsEMVs/AudioAmp/fr/specifications2014-03-17T10:26:35Z<p>Cof: /* Présentation */</p>
<hr />
<div>{{TOC right}}<br />
<br />
= Présentation =<br />
<br />
L'[[EMVs/AudioAmp|amplificateur]] reçoit un signal audio via une [http://fr.wikipedia.org/wiki/Jack_(prise) fiche jack].<br />
Il est alimenté par une tension de batterie et pilote un haut-parleur.<br />
<br />
[[File:audioAmp_system.svg|center|700px]]<br />
<br />
Un signal audio est transmis à un circuit numérique à travers un convertisseur analogique/numérique.<br />
Le circuit module ce signal en PWM pour piloter un amplificateur de puissance.<br />
L'amplification est de classe D: le circuit de puissance connecte alternativement l'alimentation positive ou la masse sur le haut-parleur,<br />
mais avec des durées différentes.<br />
La valeur moyenne de la commande PWM correspondra à la tension moyenne sur le haut-parleur.<br />
Un filtre de lissage permet d'atténuer fortement les sauts de la commutation entre les deux tensions d'alimentation.<br />
<br />
= Cahier des charges =<br />
<br />
La tension d'alimentation pour l'électronique de puissance est de 12&nbsp;V.<br />
Pour assurer une puissance de 12 W dans le haut-parleur, dont la résistance est de 4&nbsp;Ω,<br />
la tension d'alimentation est élevée à l'aide d'un convertisseur DC/DC de type "step-up".<br />
La commande du convertisseur se fait par un signal PWM à rapport cyclique fixe.<br />
La fréquence de commutation du signal PWM est d'environ 32&nbsp;kHz, pour ne pas interférer avec le signal audio.<br />
Le courant de crête à crête de l'ondulation résultant de la commutation doit être inférieur à 150&nbsp;mA<sub><i>pp</i></sub>.<br />
<br />
Le circuit numérique reçoit un signal stéréo codé sur 24&nbsp;bits.<br />
Il mélange les deux canaux et multiplie le signal résultant par un gain codé sur 8&nbsp;bits.<br />
<br />
Pour piloter l'amplificateur audio, le circuit numérique génère deux signaux PWM à complémentaires avec un temps mort.<br />
Le temps mort est d'environ 500&nbsp;ns.<br />
La fréquence de commutation du signal PWM est la plus proche possible de 100&nbsp;kHz.<br />
La fréquence de l'horloge est de 66&nbsp;MHz.<br />
<br />
L'amplificateur de puissance est suivi par un filtre passe-bas passif LC du deuxième ordre.<br />
La fréquence de coupure du filtre est d'environ 9&nbsp;kHz.<br />
L'inductance a une valeur donnée de L&nbsp;=&nbsp;300&nbsp;μH.<br />
<br />
= Circuit numérique =<br />
<br />
Le [http://wiki.hevs.ch/uit/index.php5/Hardware/Parallelport/Audio_ADC_DAC convertisseur A/D] reçoit deux tensions analogiques (canaux droite et gauche) d'[http://fr.wikipedia.org/wiki/Niveau_(audio) amplitude maximale] de 0.5 V.<br />
Il transmet l'information numérisée à un circuit numérique programmable à travers un flux [http://fr.wikipedia.org/wiki/I2S I2S].<br />
<br />
[[File:Audioamp_PWM.svg|center|700px]]<br />
<br />
Le circuit numérique pilote un convertisseur analogique/numérique et reçoit un flux [http://fr.wikipedia.org/wiki/I2S I2S].<br />
Il convertit ce flux en 2 nombres binaires signés, un par canal.<br />
Les deux canaux sont mélangés pour fournir un signal mono.<br />
Le signal mono est multiplié par un gain pour régler le volume sur le haut-parleur.<br />
<br />
Le signal résultant est modulé en PWM et transmis à l'amplificateur.<br />
Un autre signal PWM à rapport cyclique fixe est généré pour piloter le convertisseur DC/DC.<br />
<br />
= Amplificateur =<br />
<br />
L'amplificateur de puissance est de type [http://fr.wikipedia.org/wiki/Classes_de_fonctionnement_d%27un_amplificateur_%C3%A9lectronique#Classe_D classe D].<br />
Il est principalement constitué de deux transistors de puissance entre les bornes de l'alimentation et la sortie.<br />
Dans un premier temps, la deuxième branche du pont en H est remplacée par un diviseur capacitif.<br />
<br />
[[File:Audioamp_amplifier.svg|center|500px]]<br />
<br />
Des suiveurs sont utilisé pour adapter les niveaux de tension des signaux numériques à ceux des commandes des transistors de puissance.<br />
<br />
Le signal est haché.<br />
Il nécessite un filtre passe-bas avant d'être transmis à l'haut-parleur.<br />
<br />
= Filtre passe-bas =<br />
<br />
Le circuit qui filtre le signal de l'amplificateur est un filtre passif LC.<br />
<br />
[[File:audioamp_filter.svg|center|600px]]<br />
<br />
La bobine a une inductance fixe. Sur le circuit imprimé, un jeu de picots permet de choisir la valeur de la capacité.<br />
<br />
= Convertisseur DC/DC =<br />
<br />
Le [http://fr.wikipedia.org/wiki/Alimentation_%C3%A0_d%C3%A9coupage convertisseur DC/DC]<br />
est de type [http://fr.wikipedia.org/wiki/Convertisseur_Boost élévateur de tension].<br />
Il est aussi réalisé à l'aide de deux transistors de puissance.<br />
La tension de 12&nbsp;V simulant une batterie est dirigée soit vers la masse soit vers la tension de sortie.<br />
<br />
[[File:audioamp_step-up.svg|center|700px]]<br />
<br />
L'électronique de commande des transistors de puissance est la même que celle de l'amplificateur. Toutefois, une électronique assure le non-recouvrement des commandes des deux transistors de puissance. <br />
<br />
[[Category:AudioAmp]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/EMVs/AudioAmp/fr/specificationsEMVs/AudioAmp/fr/specifications2014-03-17T09:13:17Z<p>Cof: /* Présentation */</p>
<hr />
<div>{{TOC right}}<br />
<br />
= Présentation =<br />
<br />
L'[[EMVs/AudioAmp|amplificateur]] reçoit un signal audio via une [http://fr.wikipedia.org/wiki/Jack_(prise) fiche jack].<br />
Il est alimenté par une tension de batterie et pilote un haut-parleur.<br />
<br />
[[File:system.svg|center|700px]]<br />
<br />
Un signal audio est transmis à un circuit numérique à travers un convertisseur analogique/numérique.<br />
Le circuit module ce signal en PWM pour piloter un amplificateur de puissance.<br />
L'amplification est de classe D: le circuit de puissance connecte alternativement l'alimentation positive ou la masse sur le haut-parleur,<br />
mais avec des durées différentes.<br />
La valeur moyenne de la commande PWM correspondra à la tension moyenne sur le haut-parleur.<br />
Un filtre de lissage permet d'atténuer fortement les sauts de la commutation entre les deux tensions d'alimentation.<br />
<br />
= Cahier des charges =<br />
<br />
La tension d'alimentation pour l'électronique de puissance est de 12&nbsp;V.<br />
Pour assurer une puissance de 12 W dans le haut-parleur, dont la résistance est de 4&nbsp;Ω,<br />
la tension d'alimentation est élevée à l'aide d'un convertisseur DC/DC de type "step-up".<br />
La commande du convertisseur se fait par un signal PWM à rapport cyclique fixe.<br />
La fréquence de commutation du signal PWM est d'environ 32&nbsp;kHz, pour ne pas interférer avec le signal audio.<br />
Le courant de crête à crête de l'ondulation résultant de la commutation doit être inférieur à 150&nbsp;mA<sub><i>pp</i></sub>.<br />
<br />
Le circuit numérique reçoit un signal stéréo codé sur 24&nbsp;bits.<br />
Il mélange les deux canaux et multiplie le signal résultant par un gain codé sur 8&nbsp;bits.<br />
<br />
Pour piloter l'amplificateur audio, le circuit numérique génère deux signaux PWM à complémentaires avec un temps mort.<br />
Le temps mort est d'environ 500&nbsp;ns.<br />
La fréquence de commutation du signal PWM est la plus proche possible de 100&nbsp;kHz.<br />
La fréquence de l'horloge est de 66&nbsp;MHz.<br />
<br />
L'amplificateur de puissance est suivi par un filtre passe-bas passif LC du deuxième ordre.<br />
La fréquence de coupure du filtre est d'environ 9&nbsp;kHz.<br />
L'inductance a une valeur donnée de L&nbsp;=&nbsp;300&nbsp;μH.<br />
<br />
= Circuit numérique =<br />
<br />
Le [http://wiki.hevs.ch/uit/index.php5/Hardware/Parallelport/Audio_ADC_DAC convertisseur A/D] reçoit deux tensions analogiques (canaux droite et gauche) d'[http://fr.wikipedia.org/wiki/Niveau_(audio) amplitude maximale] de 0.5 V.<br />
Il transmet l'information numérisée à un circuit numérique programmable à travers un flux [http://fr.wikipedia.org/wiki/I2S I2S].<br />
<br />
[[File:Audioamp_PWM.svg|center|700px]]<br />
<br />
Le circuit numérique pilote un convertisseur analogique/numérique et reçoit un flux [http://fr.wikipedia.org/wiki/I2S I2S].<br />
Il convertit ce flux en 2 nombres binaires signés, un par canal.<br />
Les deux canaux sont mélangés pour fournir un signal mono.<br />
Le signal mono est multiplié par un gain pour régler le volume sur le haut-parleur.<br />
<br />
Le signal résultant est modulé en PWM et transmis à l'amplificateur.<br />
Un autre signal PWM à rapport cyclique fixe est généré pour piloter le convertisseur DC/DC.<br />
<br />
= Amplificateur =<br />
<br />
L'amplificateur de puissance est de type [http://fr.wikipedia.org/wiki/Classes_de_fonctionnement_d%27un_amplificateur_%C3%A9lectronique#Classe_D classe D].<br />
Il est principalement constitué de deux transistors de puissance entre les bornes de l'alimentation et la sortie.<br />
Dans un premier temps, la deuxième branche du pont en H est remplacée par un diviseur capacitif.<br />
<br />
[[File:Audioamp_amplifier.svg|center|500px]]<br />
<br />
Des suiveurs sont utilisé pour adapter les niveaux de tension des signaux numériques à ceux des commandes des transistors de puissance.<br />
<br />
Le signal est haché.<br />
Il nécessite un filtre passe-bas avant d'être transmis à l'haut-parleur.<br />
<br />
= Filtre passe-bas =<br />
<br />
Le circuit qui filtre le signal de l'amplificateur est un filtre passif LC.<br />
<br />
[[File:audioamp_filter.svg|center|600px]]<br />
<br />
La bobine a une inductance fixe. Sur le circuit imprimé, un jeu de picots permet de choisir la valeur de la capacité.<br />
<br />
= Convertisseur DC/DC =<br />
<br />
Le [http://fr.wikipedia.org/wiki/Alimentation_%C3%A0_d%C3%A9coupage convertisseur DC/DC]<br />
est de type [http://fr.wikipedia.org/wiki/Convertisseur_Boost élévateur de tension].<br />
Il est aussi réalisé à l'aide de deux transistors de puissance.<br />
La tension de 12&nbsp;V simulant une batterie est dirigée soit vers la masse soit vers la tension de sortie.<br />
<br />
[[File:audioamp_step-up.svg|center|700px]]<br />
<br />
L'électronique de commande des transistors de puissance est la même que celle de l'amplificateur. Toutefois, une électronique assure le non-recouvrement des commandes des deux transistors de puissance. <br />
<br />
[[Category:AudioAmp]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/EMVs/AudioAmp/fr/specificationsEMVs/AudioAmp/fr/specifications2014-03-17T09:12:16Z<p>Cof: </p>
<hr />
<div>{{TOC right}}<br />
<br />
= Présentation =<br />
<br />
L'[[EMVs/AudioAmp|amplificateur]] reçoit un signal audio via une [http://fr.wikipedia.org/wiki/Jack_(prise) fiche jack].<br />
Il est alimenté par une tension de batterie et pilote un haut-parleur.<br />
<br />
[[File:audioamp_ystem.svg|center|700px]]<br />
<br />
Un signal audio est transmis à un circuit numérique à travers un convertisseur analogique/numérique.<br />
Le circuit module ce signal en PWM pour piloter un amplificateur de puissance.<br />
L'amplification est de classe D: le circuit de puissance connecte alternativement l'alimentation positive ou la masse sur le haut-parleur,<br />
mais avec des durées différentes.<br />
La valeur moyenne de la commande PWM correspondra à la tension moyenne sur le haut-parleur.<br />
Un filtre de lissage permet d'atténuer fortement les sauts de la commutation entre les deux tensions d'alimentation.<br />
<br />
= Cahier des charges =<br />
<br />
La tension d'alimentation pour l'électronique de puissance est de 12&nbsp;V.<br />
Pour assurer une puissance de 12 W dans le haut-parleur, dont la résistance est de 4&nbsp;Ω,<br />
la tension d'alimentation est élevée à l'aide d'un convertisseur DC/DC de type "step-up".<br />
La commande du convertisseur se fait par un signal PWM à rapport cyclique fixe.<br />
La fréquence de commutation du signal PWM est d'environ 32&nbsp;kHz, pour ne pas interférer avec le signal audio.<br />
Le courant de crête à crête de l'ondulation résultant de la commutation doit être inférieur à 150&nbsp;mA<sub><i>pp</i></sub>.<br />
<br />
Le circuit numérique reçoit un signal stéréo codé sur 24&nbsp;bits.<br />
Il mélange les deux canaux et multiplie le signal résultant par un gain codé sur 8&nbsp;bits.<br />
<br />
Pour piloter l'amplificateur audio, le circuit numérique génère deux signaux PWM à complémentaires avec un temps mort.<br />
Le temps mort est d'environ 500&nbsp;ns.<br />
La fréquence de commutation du signal PWM est la plus proche possible de 100&nbsp;kHz.<br />
La fréquence de l'horloge est de 66&nbsp;MHz.<br />
<br />
L'amplificateur de puissance est suivi par un filtre passe-bas passif LC du deuxième ordre.<br />
La fréquence de coupure du filtre est d'environ 9&nbsp;kHz.<br />
L'inductance a une valeur donnée de L&nbsp;=&nbsp;300&nbsp;μH.<br />
<br />
= Circuit numérique =<br />
<br />
Le [http://wiki.hevs.ch/uit/index.php5/Hardware/Parallelport/Audio_ADC_DAC convertisseur A/D] reçoit deux tensions analogiques (canaux droite et gauche) d'[http://fr.wikipedia.org/wiki/Niveau_(audio) amplitude maximale] de 0.5 V.<br />
Il transmet l'information numérisée à un circuit numérique programmable à travers un flux [http://fr.wikipedia.org/wiki/I2S I2S].<br />
<br />
[[File:Audioamp_PWM.svg|center|700px]]<br />
<br />
Le circuit numérique pilote un convertisseur analogique/numérique et reçoit un flux [http://fr.wikipedia.org/wiki/I2S I2S].<br />
Il convertit ce flux en 2 nombres binaires signés, un par canal.<br />
Les deux canaux sont mélangés pour fournir un signal mono.<br />
Le signal mono est multiplié par un gain pour régler le volume sur le haut-parleur.<br />
<br />
Le signal résultant est modulé en PWM et transmis à l'amplificateur.<br />
Un autre signal PWM à rapport cyclique fixe est généré pour piloter le convertisseur DC/DC.<br />
<br />
= Amplificateur =<br />
<br />
L'amplificateur de puissance est de type [http://fr.wikipedia.org/wiki/Classes_de_fonctionnement_d%27un_amplificateur_%C3%A9lectronique#Classe_D classe D].<br />
Il est principalement constitué de deux transistors de puissance entre les bornes de l'alimentation et la sortie.<br />
Dans un premier temps, la deuxième branche du pont en H est remplacée par un diviseur capacitif.<br />
<br />
[[File:Audioamp_amplifier.svg|center|500px]]<br />
<br />
Des suiveurs sont utilisé pour adapter les niveaux de tension des signaux numériques à ceux des commandes des transistors de puissance.<br />
<br />
Le signal est haché.<br />
Il nécessite un filtre passe-bas avant d'être transmis à l'haut-parleur.<br />
<br />
= Filtre passe-bas =<br />
<br />
Le circuit qui filtre le signal de l'amplificateur est un filtre passif LC.<br />
<br />
[[File:audioamp_filter.svg|center|600px]]<br />
<br />
La bobine a une inductance fixe. Sur le circuit imprimé, un jeu de picots permet de choisir la valeur de la capacité.<br />
<br />
= Convertisseur DC/DC =<br />
<br />
Le [http://fr.wikipedia.org/wiki/Alimentation_%C3%A0_d%C3%A9coupage convertisseur DC/DC]<br />
est de type [http://fr.wikipedia.org/wiki/Convertisseur_Boost élévateur de tension].<br />
Il est aussi réalisé à l'aide de deux transistors de puissance.<br />
La tension de 12&nbsp;V simulant une batterie est dirigée soit vers la masse soit vers la tension de sortie.<br />
<br />
[[File:audioamp_step-up.svg|center|700px]]<br />
<br />
L'électronique de commande des transistors de puissance est la même que celle de l'amplificateur. Toutefois, une électronique assure le non-recouvrement des commandes des deux transistors de puissance. <br />
<br />
[[Category:AudioAmp]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/File:Audioamp_step-up.svgFile:Audioamp step-up.svg2014-03-17T09:06:42Z<p>Cof: step-up DC/DC converter</p>
<hr />
<div>step-up DC/DC converter</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/File:Audioamp_filter.svgFile:Audioamp filter.svg2014-03-17T09:01:59Z<p>Cof: Passive LC filter</p>
<hr />
<div>Passive LC filter</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/File:Audioamp_amplifier.svgFile:Audioamp amplifier.svg2014-03-17T08:54:25Z<p>Cof: Class D, half-bridge amplifier</p>
<hr />
<div>Class D, half-bridge amplifier</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/EMVs/AudioAmp/fr/specificationsEMVs/AudioAmp/fr/specifications2014-03-17T08:51:37Z<p>Cof: /* Circuit numérique */</p>
<hr />
<div>{{TOC right}}<br />
<br />
= Présentation =<br />
<br />
L'[[EMVs/AudioAmp|amplificateur]] reçoit un signal audio via une [http://fr.wikipedia.org/wiki/Jack_(prise) fiche jack].<br />
Il est alimenté par une tension de batterie et pilote un haut-parleur.<br />
<br />
[[File:System.svg|700px]]<br />
<br />
Un signal audio est transmis à un circuit numérique à travers un convertisseur analogique/numérique.<br />
Le circuit module ce signal en PWM pour piloter un amplificateur de puissance.<br />
L'amplification est de classe D: le circuit de puissance connecte alternativement l'alimentation positive ou la masse sur le haut-parleur,<br />
mais avec des durées différentes.<br />
La valeur moyenne de la commande PWM correspondra à la tension moyenne sur le haut-parleur.<br />
Un filtre de lissage permet d'atténuer fortement les sauts de la commutation entre les deux tensions d'alimentation.<br />
<br />
== Cahier des charges ==<br />
<br />
La tension d'alimentation pour l'électronique de puissance est de 12&nbsp;V.<br />
Pour assurer une puissance de 12 W dans le haut-parleur, dont la résistance est de 4&nbsp;Ω,<br />
la tension d'alimentation est élevée à l'aide d'un convertisseur DC/DC de type "step-up".<br />
La commande du convertisseur se fait par un signal PWM à rapport cyclique fixe.<br />
La fréquence de commutation du signal PWM est d'environ 32&nbsp;kHz, pour ne pas interférer avec le signal audio.<br />
Le courant de crête à crête de l'ondulation résultant de la commutation doit être inférieur à 150&nbsp;mA<sub><i>pp</i></sub>.<br />
<br />
Le circuit numérique reçoit un signal stéréo codé sur 24&nbsp;bits.<br />
Il mélange les deux canaux et multiplie le signal résultant par un gain codé sur 8&nbsp;bits.<br />
<br />
Pour piloter l'amplificateur audio, le circuit numérique génère deux signaux PWM à complémentaires avec un temps mort.<br />
Le temps mort est d'environ 500&nbsp;ns.<br />
La fréquence de commutation du signal PWM est la plus proche possible de 100&nbsp;kHz.<br />
La fréquence de l'horloge est de 66&nbsp;MHz.<br />
<br />
L'amplificateur de puissance est suivi par un filtre passe-bas passif LC du deuxième ordre.<br />
La fréquence de coupure du filtre est d'environ 9&nbsp;kHz.<br />
L'inductance a une valeur donnée de L&nbsp;=&nbsp;300&nbsp;μH.<br />
<br />
== Circuit numérique ==<br />
<br />
Le [http://wiki.hevs.ch/uit/index.php5/Hardware/Parallelport/Audio_ADC_DAC convertisseur A/D] reçoit deux tensions analogiques (canaux droite et gauche) d'[http://fr.wikipedia.org/wiki/Niveau_(audio) amplitude maximale] de 0.5 V.<br />
Il transmet l'information numérisée à un circuit numérique programmable à travers un flux [http://fr.wikipedia.org/wiki/I2S I2S].<br />
<br />
[[File:Audioamp_PWM.svg|center|700px]]<br />
<br />
Le circuit numérique pilote un convertisseur analogique/numérique et reçoit un flux [http://fr.wikipedia.org/wiki/I2S I2S].<br />
Il convertit ce flux en 2 nombres binaires signés, un par canal.<br />
Les deux canaux sont mélangés pour fournir un signal mono.<br />
Le signal mono est multiplié par un gain pour régler le volume sur le haut-parleur.<br />
<br />
Le signal résultant est modulé en PWM et transmis à l'amplificateur.<br />
Un autre signal PWM à rapport cyclique fixe est généré pour piloter le convertisseur DC/DC.<br />
<br />
== Modulation PWM ==<br />
<br />
La [http://fr.wikipedia.org/wiki/PWM modulation PWM] se fait avec une période la plus proche possible de 100 kHz.<br />
L'horloge du circuit est à 66 MHz.<br />
<br />
Le signal signé codé sur 24 bits est transformé en un signal non-signé.<br />
Pour cela, il est décalé vers le haut de <math>2^{23}</math>.<br />
Le signal non-signé est alors divisé par une puissance de 2<br />
de manière à ce que sa gamme corresponde à celle du compteur en dents de scie du modulateur PWM.<br />
<br />
Le signal PWM est conditionné sous la forme de 2 signaux complémentaires (l'un étant l'inverse de l'autre)<br />
pour piloter un demi [http://fr.wikipedia.org/wiki/Pont_en_h pont en H].<br />
Afin d'éviter des court-circuits, les deux commandes doivent être séparées par un temps mort<br />
d'au moins 0.5 us:<br />
au moment où l'une des commandes passe à '0', l'autre doit attendre la durée du temps mort avant de commuter à '1'.<br />
<br />
Un deuxième modulateur fournit un rapport cyclique fixe pour le convertisseur DC/DC.<br />
Les spécifications de ce modulateur (fréquence, rapport cyclique) sont données dans la partie qui traite du convertisseur DC/DC.<br />
<br />
== Amplification ==<br />
<br />
L'amplificateur de puissance est de type [http://fr.wikipedia.org/wiki/Classes_de_fonctionnement_d%27un_amplificateur_%C3%A9lectronique#Classe_D classe D].<br />
<br />
Les signaux logiques (entre 0 V et 3.3 V) de PWM sont mis en forme de manière à pouvoir piloter les transistors de puissance du demi [http://fr.wikipedia.org/wiki/Pont_en_h pont en H].<br />
Ceci se fait à l'aide d'un circuit dédié à ce genre d'applications.<br />
<br />
Dans un premier temps, la deuxième branche du pont en H est remplacée par un diviseur capacitif.<br />
<br />
Le signal d'alimentation haché par le pont est lissé par un filtre passe-bas passif LC<br />
avant d'être amenené au haut-parleur.<br />
La fréquence de coupure de ce filtre est de 9 kHz.<br />
L'inductance du circuit LC est de 300 <math>\mu</math>H.<br />
<br />
== Conversion DC/DC ==<br />
<br />
Le [http://fr.wikipedia.org/wiki/Alimentation_%C3%A0_d%C3%A9coupage convertisseur DC/DC]<br />
est de type [http://fr.wikipedia.org/wiki/Convertisseur_Boost élévateur de tension].<br />
La tension d'alimentation pour l'électronique de puissance est de 12 V.<br />
Il délivre une tension suffisante pour pouvoir fournir 12 W au haut-parleur,<br />
lequel a une impédance de 4 Ohm.<br />
<br />
Le convertisseur doit fonctionner à une fréquence de commutation supérieure à 20 kHz,<br />
de manière à ce que les commutations soient en-dehors de la bande audible.<br />
<br />
Le courant d'ondulation crête à crête dans l'inductance de 1mH, résultant de la commutation,<br />
doit être inférieur à 150 mA''pp''. <br />
<br />
<br />
<br />
[[Category:AudioAmp]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/File:Audioamp_PWM.svgFile:Audioamp PWM.svg2014-03-17T08:48:15Z<p>Cof: digital circuit: A/D, gain and PWM</p>
<hr />
<div>digital circuit: A/D, gain and PWM</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/EMVs/AudioAmp/fr/specificationsEMVs/AudioAmp/fr/specifications2014-03-17T08:10:59Z<p>Cof: /* Spécifications de l'amplificateur audio */</p>
<hr />
<div>{{TOC right}}<br />
<br />
= Présentation =<br />
<br />
L'[[EMVs/AudioAmp|amplificateur]] reçoit un signal audio via une [http://fr.wikipedia.org/wiki/Jack_(prise) fiche jack].<br />
Il est alimenté par une tension de batterie et pilote un haut-parleur.<br />
<br />
[[File:System.svg|700px]]<br />
<br />
Un signal audio est transmis à un circuit numérique à travers un convertisseur analogique/numérique.<br />
Le circuit module ce signal en PWM pour piloter un amplificateur de puissance.<br />
L'amplification est de classe D: le circuit de puissance connecte alternativement l'alimentation positive ou la masse sur le haut-parleur,<br />
mais avec des durées différentes.<br />
La valeur moyenne de la commande PWM correspondra à la tension moyenne sur le haut-parleur.<br />
Un filtre de lissage permet d'atténuer fortement les sauts de la commutation entre les deux tensions d'alimentation.<br />
<br />
== Cahier des charges ==<br />
<br />
La tension d'alimentation pour l'électronique de puissance est de 12&nbsp;V.<br />
Pour assurer une puissance de 12 W dans le haut-parleur, dont la résistance est de 4&nbsp;Ω,<br />
la tension d'alimentation est élevée à l'aide d'un convertisseur DC/DC de type "step-up".<br />
La commande du convertisseur se fait par un signal PWM à rapport cyclique fixe.<br />
La fréquence de commutation du signal PWM est d'environ 32&nbsp;kHz, pour ne pas interférer avec le signal audio.<br />
Le courant de crête à crête de l'ondulation résultant de la commutation doit être inférieur à 150&nbsp;mA<sub><i>pp</i></sub>.<br />
<br />
Le circuit numérique reçoit un signal stéréo codé sur 24&nbsp;bits.<br />
Il mélange les deux canaux et multiplie le signal résultant par un gain codé sur 8&nbsp;bits.<br />
<br />
Pour piloter l'amplificateur audio, le circuit numérique génère deux signaux PWM à complémentaires avec un temps mort.<br />
Le temps mort est d'environ 500&nbsp;ns.<br />
La fréquence de commutation du signal PWM est la plus proche possible de 100&nbsp;kHz.<br />
La fréquence de l'horloge est de 66&nbsp;MHz.<br />
<br />
L'amplificateur de puissance est suivi par un filtre passe-bas passif LC du deuxième ordre.<br />
La fréquence de coupure du filtre est d'environ 9&nbsp;kHz.<br />
L'inductance a une valeur donnée de L&nbsp;=&nbsp;300&nbsp;μH.<br />
<br />
== Circuit numérique ==<br />
<br />
Le [http://wiki.hevs.ch/uit/index.php5/Hardware/Parallelport/Audio_ADC_DAC convertisseur A/D] reçoit deux tensions analogiques (canaux droite et gauche) d'[http://fr.wikipedia.org/wiki/Niveau_(audio) amplitude maximale] de 0.5 V.<br />
Il transmet l'information numérisée à un circuit numérique programmable à travers un flux [http://fr.wikipedia.org/wiki/I2S I2S].<br />
<br />
[[File:System.svg|700px]]<br />
<br />
Le circuit numérique pilote un convertisseur analogique/numérique et reçoit un flux [http://fr.wikipedia.org/wiki/I2S I2S].<br />
Il convertit ce flux en 2 nombres binaires signés, un par canal.<br />
Les deux canaux sont mélangés pour fournir un signal mono.<br />
Le signal mono est multiplié par un gain pour régler le volume sur le haut-parleur.<br />
<br />
== Modulation PWM ==<br />
<br />
La [http://fr.wikipedia.org/wiki/PWM modulation PWM] se fait avec une période la plus proche possible de 100 kHz.<br />
L'horloge du circuit est à 66 MHz.<br />
<br />
Le signal signé codé sur 24 bits est transformé en un signal non-signé.<br />
Pour cela, il est décalé vers le haut de <math>2^{23}</math>.<br />
Le signal non-signé est alors divisé par une puissance de 2<br />
de manière à ce que sa gamme corresponde à celle du compteur en dents de scie du modulateur PWM.<br />
<br />
Le signal PWM est conditionné sous la forme de 2 signaux complémentaires (l'un étant l'inverse de l'autre)<br />
pour piloter un demi [http://fr.wikipedia.org/wiki/Pont_en_h pont en H].<br />
Afin d'éviter des court-circuits, les deux commandes doivent être séparées par un temps mort<br />
d'au moins 0.5 us:<br />
au moment où l'une des commandes passe à '0', l'autre doit attendre la durée du temps mort avant de commuter à '1'.<br />
<br />
Un deuxième modulateur fournit un rapport cyclique fixe pour le convertisseur DC/DC.<br />
Les spécifications de ce modulateur (fréquence, rapport cyclique) sont données dans la partie qui traite du convertisseur DC/DC.<br />
<br />
== Amplification ==<br />
<br />
L'amplificateur de puissance est de type [http://fr.wikipedia.org/wiki/Classes_de_fonctionnement_d%27un_amplificateur_%C3%A9lectronique#Classe_D classe D].<br />
<br />
Les signaux logiques (entre 0 V et 3.3 V) de PWM sont mis en forme de manière à pouvoir piloter les transistors de puissance du demi [http://fr.wikipedia.org/wiki/Pont_en_h pont en H].<br />
Ceci se fait à l'aide d'un circuit dédié à ce genre d'applications.<br />
<br />
Dans un premier temps, la deuxième branche du pont en H est remplacée par un diviseur capacitif.<br />
<br />
Le signal d'alimentation haché par le pont est lissé par un filtre passe-bas passif LC<br />
avant d'être amenené au haut-parleur.<br />
La fréquence de coupure de ce filtre est de 9 kHz.<br />
L'inductance du circuit LC est de 300 <math>\mu</math>H.<br />
<br />
== Conversion DC/DC ==<br />
<br />
Le [http://fr.wikipedia.org/wiki/Alimentation_%C3%A0_d%C3%A9coupage convertisseur DC/DC]<br />
est de type [http://fr.wikipedia.org/wiki/Convertisseur_Boost élévateur de tension].<br />
La tension d'alimentation pour l'électronique de puissance est de 12 V.<br />
Il délivre une tension suffisante pour pouvoir fournir 12 W au haut-parleur,<br />
lequel a une impédance de 4 Ohm.<br />
<br />
Le convertisseur doit fonctionner à une fréquence de commutation supérieure à 20 kHz,<br />
de manière à ce que les commutations soient en-dehors de la bande audible.<br />
<br />
Le courant d'ondulation crête à crête dans l'inductance de 1mH, résultant de la commutation,<br />
doit être inférieur à 150 mA''pp''. <br />
<br />
<br />
<br />
[[Category:AudioAmp]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/EMVs/AudioAmp/preparationEMVs/AudioAmp/preparation2014-01-21T14:31:07Z<p>Cof: /* FPGA project */</p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
<br />
== Lab PC users ==<br />
<br />
Check that there is a local user on the Lab PCs for the invited students.<br />
<br />
== USB stick ==<br />
<br />
Prepare an USB stick with HEVs documentation files and lab data comprising:<br />
* the HTML presentation: <code>Presentation</code><br />
* the day's schedule: <code>Presentation\programme de la journée</code><br />
* an FPGA design setup: <code>Labo\FPGA</code><br />
* the PDFs of the power electronics PCBs in <code>Labo\PCBs</code><br />
* a simulation setup for the DC/DC converter: <code>Labo\Simulations</code><br />
<br />
== FPGA project ==<br />
<br />
Modify the master version of the project on <code>D:\Labs\AudioAmp</code>:<br />
* for <code>AudioAmp/audioAmplifier</code>, select <code>studentVersion</code> as default view<br />
* for <code>AudioAmp/pwmModulator</code>, select <code>studentVersion</code> as default view<br />
<br />
Copy the folder <code>D:\Labs\AudioAmp</code> to<br />
<code>I:\Admin\SI-ET\FiliereSI\Promotion\EMVs\Electroniciens\Organisation\PourClefUsb\Labo\FPGA</code>.</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/EMVs/AudioAmp/preparationEMVs/AudioAmp/preparation2014-01-21T14:30:44Z<p>Cof: </p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
<br />
== Lab PC users ==<br />
<br />
Check that there is a local user on the Lab PCs for the invited students.<br />
<br />
== USB stick ==<br />
<br />
Prepare an USB stick with HEVs documentation files and lab data comprising:<br />
* the HTML presentation: <code>Presentation</code><br />
* the day's schedule: <code>Presentation\programme de la journée</code><br />
* an FPGA design setup: <code>Labo\FPGA</code><br />
* the PDFs of the power electronics PCBs in <code>Labo\PCBs</code><br />
* a simulation setup for the DC/DC converter: <code>Labo\Simulations</code><br />
<br />
== FPGA project ==<br />
<br />
Modify the master version of the project on <code>D:\Labs\AudioAmp</code>:<br />
* for <code>AudioAmp/audioAmplifier</code>, select <code>studentVersion</code> as default view<br />
* for <code>AudioAmp/pwmModulator</code>, select <code>studentVersion</code> as default view<br />
<br />
Copy the folder <code>D:\Labs\AudioAmp</code><br />
<code>I:\Admin\SI-ET\FiliereSI\Promotion\EMVs\Electroniciens\Organisation\PourClefUsb\Labo\FPGA</code>.</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/EMVs/AudioAmp/preparationEMVs/AudioAmp/preparation2014-01-21T13:59:53Z<p>Cof: Created page with "{{private}} {{TOC right}} == Lab PC users == Check that there is a local user on the Lab PCs for the invited students. == USB stick == Prepare an USB stick with HEVs docum..."</p>
<hr />
<div>{{private}}<br />
{{TOC right}}<br />
<br />
== Lab PC users ==<br />
<br />
Check that there is a local user on the Lab PCs for the invited students.<br />
<br />
== USB stick ==<br />
<br />
Prepare an USB stick with HEVs documentation files and lab data comprising:<br />
* an FPGA design setup<br />
* the PDFs of the power electronics PCBs<br />
* a simulation setup for the DC/DC converter<br />
<br />
== FPGA project ==<br />
<br />
Modify the master version of the project on <code>D:\Labs\AudioAmp</code>:<br />
* for <code>AudioAmp/audioAmplifier</code>, select <code>studentVersion</code> as default view<br />
* for <code>AudioAmp/pwmModulator</code>, select <code>studentVersion</code> as default view<br />
<br />
Copy the folder <code>D:\Labs\AudioAmp</code><br />
<code>I:\Admin\SI-ET\FiliereSI\Promotion\EMVs\Electroniciens\Organisation\PourClefUsb\Labo</code>.</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/EMVs/AudioAmpEMVs/AudioAmp2014-01-21T13:42:42Z<p>Cof: /* Organisation */</p>
<hr />
<div>{{TOC right}}<br />
<br />
The Audio amplifier project is a one day sneak preview of the electronics taught at the<br />
[http://electricite-mecanique.hevs.ch/ Industrial Systems] section of [http://www.hevs.edu/ HES-SO//Valais Wallis].<br />
As such, it presents a mixed analog/digital system.<br />
<br />
== Lab activity ==<br />
<br />
The system consists of:<br />
* an A/D converter which receives an audio signal<br />
* a digital circuit (FPGA) which mutiplies this signal by a gain and builds a Pulse Width Modulated (PWM) signal out of it<br />
* a class D amplifier which drives a loudspeaker from the PWM signal<br />
* a step-up circuit which generates a power supply voltage from a 12 V battery in order to have enough power to drive the loudspeaker<br />
<br />
The project is presented to the [http://www.emvs.ch/ EMVs] students.<br />
They are provided with [[EMVs/AudioAmp/fr/specifications|specifications in french]].<br />
<br />
== Organisation ==<br />
<br />
The system is developed based on [[EMVs/AudioAmp/boards|prototyping boards]] which are also used for other labs.<br />
<br />
Some specific lab [[EMVs/AudioAmp/material|material]] is required additionally to the base lab equipment.<br />
<br />
The day must be [[EMVs/AudioAmp/preparation|prepared]] with Lab files, USB sticks, etc.<br />
<br />
[[Category:AudioAmp]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/EMVs/AudioAmp/fr/specificationsEMVs/AudioAmp/fr/specifications2014-01-21T12:03:38Z<p>Cof: /* Spécifications de l'amplificateur audio */</p>
<hr />
<div>{{TOC right}}<br />
<br />
= Spécifications de l'amplificateur audio =<br />
<br />
L'[[EMVs/AudioAmp|amplificateur]] reçoit un signal audio via une [http://fr.wikipedia.org/wiki/Jack_(prise) fiche jack].<br />
Il est alimenté par une tension de batterie et pilote un haut-parleur.<br />
<br />
[[File:System.svg|700px]]<br />
<br />
== Conversion analogique-numérique ==<br />
<br />
Le convertisseur A/D reçoit deux tensions analogiques (canaux droite et gauche) d'[http://fr.wikipedia.org/wiki/Niveau_(audio) amplitude maximale] de 0.5 V.<br />
Il transmet l'information numérisée à un circuit numérique programmable à travers un flux [http://fr.wikipedia.org/wiki/I2S I2S].<br />
<br />
== Gain ==<br />
<br />
Le circuit numérique reçoit le flux [http://fr.wikipedia.org/wiki/I2S I2S].<br />
Il convertit ce flux en 2 nombres binaires signés, un par canal.<br />
Ces signaux sont codés sur 24 bits<br />
<br />
Comme il n'y a qu'un haut-parleur, les deux canaux sont mélangés pour fournir un signal mono.<br />
Le signal mono est lui aussi signé et codé sur 24 bits.<br />
<br />
Le signal mono est multiplié par un gain, qui est un nombre 8 bits non-signé<br />
provenant de deux boutons rotatifs qui délivrent chacun 4 bits du gain.<br />
Le résultat de la multiplication est divisé par <math>2^8</math><br />
de manière à revenir à un nombre signé codé sur 24 bits.<br />
<br />
== Modulation PWM ==<br />
<br />
La [http://fr.wikipedia.org/wiki/PWM modulation PWM] se fait avec une période la plus proche possible de 100 kHz.<br />
L'horloge du circuit est à 66 MHz.<br />
<br />
Le signal signé codé sur 24 bits est transformé en un signal non-signé.<br />
Pour cela, il est décalé vers le haut de <math>2^{23}</math>.<br />
Le signal non-signé est alors divisé par une puissance de 2<br />
de manière à ce que sa gamme corresponde à celle du compteur en dents de scie du modulateur PWM.<br />
<br />
Le signal PWM est conditionné sous la forme de 2 signaux complémentaires (l'un étant l'inverse de l'autre)<br />
pour piloter un demi [http://fr.wikipedia.org/wiki/Pont_en_h pont en H].<br />
Afin d'éviter des court-circuits, les deux commandes doivent être séparées par un temps mort<br />
d'au moins 0.5 us:<br />
au moment où l'une des commandes passe à '0', l'autre doit attendre la durée du temps mort avant de commuter à '1'.<br />
<br />
Un deuxième modulateur fournit un rapport cyclique fixe pour le convertisseur DC/DC.<br />
Les spécifications de ce modulateur (fréquence, rapport cyclique) sont données dans la partie qui traite du convertisseur DC/DC.<br />
<br />
== Amplification ==<br />
<br />
L'amplificateur de puissance est de type [http://fr.wikipedia.org/wiki/Classes_de_fonctionnement_d%27un_amplificateur_%C3%A9lectronique#Classe_D classe D].<br />
<br />
Les signaux logiques (entre 0 V et 3.3 V) de PWM sont mis en forme de manière à pouvoir piloter les transistors de puissance du demi [http://fr.wikipedia.org/wiki/Pont_en_h pont en H].<br />
Ceci se fait à l'aide d'un circuit dédié à ce genre d'applications.<br />
<br />
Dans un premier temps, la deuxième branche du pont en H est remplacée par un diviseur capacitif.<br />
<br />
Le signal d'alimentation haché par le pont est lissé par un filtre passe-bas passif LC<br />
avant d'être amenené au haut-parleur.<br />
La fréquence de coupure de ce filtre est de 9 kHz.<br />
L'inductance du circuit LC est de 300 <math>\mu</math>H.<br />
<br />
== Conversion DC/DC ==<br />
<br />
Le [http://fr.wikipedia.org/wiki/Alimentation_%C3%A0_d%C3%A9coupage convertisseur DC/DC]<br />
est de type [http://fr.wikipedia.org/wiki/Convertisseur_Boost élévateur de tension].<br />
Il délivre une tension suffisante pour pouvoir fournir 12 W au le haut-parleur,<br />
lequel a une impédance de 4 Ohm.<br />
<br />
Il fonctionne avec une fréquence de commutation d'environ 32 kHz,<br />
de manière à ce que les commutations soient en-dehors de la bande audible.<br />
<br />
Le courant de crête à crête de l'ondulation résultant de la commutation doit être inférieur à 380 mA''pp''.<br />
<br />
[[Category:AudioAmp]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/EMVs/AudioAmp/fr/specificationsEMVs/AudioAmp/fr/specifications2014-01-21T12:02:56Z<p>Cof: /* Spécifications de l'amplificateur audio */</p>
<hr />
<div>{{TOC right}}<br />
<br />
= Spécifications de l'amplificateur audio =<br />
<br />
L'[[EMVs/AudioAmp|amplificateur]] reçoit un signal audio via une [http://fr.wikipedia.org/wiki/Jack_(prise) prise jack].<br />
Il est alimenté par une tension de batterie et pilote un haut-parleur.<br />
<br />
[[File:System.svg|700px]]<br />
<br />
== Conversion analogique-numérique ==<br />
<br />
Le convertisseur A/D reçoit deux tensions analogiques (canaux droite et gauche) d'[http://fr.wikipedia.org/wiki/Niveau_(audio) amplitude maximale] de 0.5 V.<br />
Il transmet l'information numérisée à un circuit numérique programmable à travers un flux [http://fr.wikipedia.org/wiki/I2S I2S].<br />
<br />
== Gain ==<br />
<br />
Le circuit numérique reçoit le flux [http://fr.wikipedia.org/wiki/I2S I2S].<br />
Il convertit ce flux en 2 nombres binaires signés, un par canal.<br />
Ces signaux sont codés sur 24 bits<br />
<br />
Comme il n'y a qu'un haut-parleur, les deux canaux sont mélangés pour fournir un signal mono.<br />
Le signal mono est lui aussi signé et codé sur 24 bits.<br />
<br />
Le signal mono est multiplié par un gain, qui est un nombre 8 bits non-signé<br />
provenant de deux boutons rotatifs qui délivrent chacun 4 bits du gain.<br />
Le résultat de la multiplication est divisé par <math>2^8</math><br />
de manière à revenir à un nombre signé codé sur 24 bits.<br />
<br />
== Modulation PWM ==<br />
<br />
La [http://fr.wikipedia.org/wiki/PWM modulation PWM] se fait avec une période la plus proche possible de 100 kHz.<br />
L'horloge du circuit est à 66 MHz.<br />
<br />
Le signal signé codé sur 24 bits est transformé en un signal non-signé.<br />
Pour cela, il est décalé vers le haut de <math>2^{23}</math>.<br />
Le signal non-signé est alors divisé par une puissance de 2<br />
de manière à ce que sa gamme corresponde à celle du compteur en dents de scie du modulateur PWM.<br />
<br />
Le signal PWM est conditionné sous la forme de 2 signaux complémentaires (l'un étant l'inverse de l'autre)<br />
pour piloter un demi [http://fr.wikipedia.org/wiki/Pont_en_h pont en H].<br />
Afin d'éviter des court-circuits, les deux commandes doivent être séparées par un temps mort<br />
d'au moins 0.5 us:<br />
au moment où l'une des commandes passe à '0', l'autre doit attendre la durée du temps mort avant de commuter à '1'.<br />
<br />
Un deuxième modulateur fournit un rapport cyclique fixe pour le convertisseur DC/DC.<br />
Les spécifications de ce modulateur (fréquence, rapport cyclique) sont données dans la partie qui traite du convertisseur DC/DC.<br />
<br />
== Amplification ==<br />
<br />
L'amplificateur de puissance est de type [http://fr.wikipedia.org/wiki/Classes_de_fonctionnement_d%27un_amplificateur_%C3%A9lectronique#Classe_D classe D].<br />
<br />
Les signaux logiques (entre 0 V et 3.3 V) de PWM sont mis en forme de manière à pouvoir piloter les transistors de puissance du demi [http://fr.wikipedia.org/wiki/Pont_en_h pont en H].<br />
Ceci se fait à l'aide d'un circuit dédié à ce genre d'applications.<br />
<br />
Dans un premier temps, la deuxième branche du pont en H est remplacée par un diviseur capacitif.<br />
<br />
Le signal d'alimentation haché par le pont est lissé par un filtre passe-bas passif LC<br />
avant d'être amenené au haut-parleur.<br />
La fréquence de coupure de ce filtre est de 9 kHz.<br />
L'inductance du circuit LC est de 300 <math>\mu</math>H.<br />
<br />
== Conversion DC/DC ==<br />
<br />
Le [http://fr.wikipedia.org/wiki/Alimentation_%C3%A0_d%C3%A9coupage convertisseur DC/DC]<br />
est de type [http://fr.wikipedia.org/wiki/Convertisseur_Boost élévateur de tension].<br />
Il délivre une tension suffisante pour pouvoir fournir 12 W au le haut-parleur,<br />
lequel a une impédance de 4 Ohm.<br />
<br />
Il fonctionne avec une fréquence de commutation d'environ 32 kHz,<br />
de manière à ce que les commutations soient en-dehors de la bande audible.<br />
<br />
Le courant de crête à crête de l'ondulation résultant de la commutation doit être inférieur à 380 mA''pp''.<br />
<br />
[[Category:AudioAmp]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/EMVs/AudioAmp/fr/specificationsEMVs/AudioAmp/fr/specifications2014-01-21T12:00:38Z<p>Cof: /* Amplification */</p>
<hr />
<div>{{TOC right}}<br />
<br />
= Spécifications de l'amplificateur audio =<br />
<br />
L'[[EMVs/AudioAmp|amplificateur]] reçoit un signal audio via un connecteur "jack".<br />
Il est alimenté par une tension de batterie et pilote un haut-parleur.<br />
<br />
[[File:System.svg|700px]]<br />
<br />
== Conversion analogique-numérique ==<br />
<br />
Le convertisseur A/D reçoit deux tensions analogiques (canaux droite et gauche) d'[http://fr.wikipedia.org/wiki/Niveau_(audio) amplitude maximale] de 0.5 V.<br />
Il transmet l'information numérisée à un circuit numérique programmable à travers un flux [http://fr.wikipedia.org/wiki/I2S I2S].<br />
<br />
== Gain ==<br />
<br />
Le circuit numérique reçoit le flux [http://fr.wikipedia.org/wiki/I2S I2S].<br />
Il convertit ce flux en 2 nombres binaires signés, un par canal.<br />
Ces signaux sont codés sur 24 bits<br />
<br />
Comme il n'y a qu'un haut-parleur, les deux canaux sont mélangés pour fournir un signal mono.<br />
Le signal mono est lui aussi signé et codé sur 24 bits.<br />
<br />
Le signal mono est multiplié par un gain, qui est un nombre 8 bits non-signé<br />
provenant de deux boutons rotatifs qui délivrent chacun 4 bits du gain.<br />
Le résultat de la multiplication est divisé par <math>2^8</math><br />
de manière à revenir à un nombre signé codé sur 24 bits.<br />
<br />
== Modulation PWM ==<br />
<br />
La [http://fr.wikipedia.org/wiki/PWM modulation PWM] se fait avec une période la plus proche possible de 100 kHz.<br />
L'horloge du circuit est à 66 MHz.<br />
<br />
Le signal signé codé sur 24 bits est transformé en un signal non-signé.<br />
Pour cela, il est décalé vers le haut de <math>2^{23}</math>.<br />
Le signal non-signé est alors divisé par une puissance de 2<br />
de manière à ce que sa gamme corresponde à celle du compteur en dents de scie du modulateur PWM.<br />
<br />
Le signal PWM est conditionné sous la forme de 2 signaux complémentaires (l'un étant l'inverse de l'autre)<br />
pour piloter un demi [http://fr.wikipedia.org/wiki/Pont_en_h pont en H].<br />
Afin d'éviter des court-circuits, les deux commandes doivent être séparées par un temps mort<br />
d'au moins 0.5 us:<br />
au moment où l'une des commandes passe à '0', l'autre doit attendre la durée du temps mort avant de commuter à '1'.<br />
<br />
Un deuxième modulateur fournit un rapport cyclique fixe pour le convertisseur DC/DC.<br />
Les spécifications de ce modulateur (fréquence, rapport cyclique) sont données dans la partie qui traite du convertisseur DC/DC.<br />
<br />
== Amplification ==<br />
<br />
L'amplificateur de puissance est de type [http://fr.wikipedia.org/wiki/Classes_de_fonctionnement_d%27un_amplificateur_%C3%A9lectronique#Classe_D classe D].<br />
<br />
Les signaux logiques (entre 0 V et 3.3 V) de PWM sont mis en forme de manière à pouvoir piloter les transistors de puissance du demi [http://fr.wikipedia.org/wiki/Pont_en_h pont en H].<br />
Ceci se fait à l'aide d'un circuit dédié à ce genre d'applications.<br />
<br />
Dans un premier temps, la deuxième branche du pont en H est remplacée par un diviseur capacitif.<br />
<br />
Le signal d'alimentation haché par le pont est lissé par un filtre passe-bas passif LC<br />
avant d'être amenené au haut-parleur.<br />
La fréquence de coupure de ce filtre est de 9 kHz.<br />
L'inductance du circuit LC est de 300 <math>\mu</math>H.<br />
<br />
== Conversion DC/DC ==<br />
<br />
Le [http://fr.wikipedia.org/wiki/Alimentation_%C3%A0_d%C3%A9coupage convertisseur DC/DC]<br />
est de type [http://fr.wikipedia.org/wiki/Convertisseur_Boost élévateur de tension].<br />
Il délivre une tension suffisante pour pouvoir fournir 12 W au le haut-parleur,<br />
lequel a une impédance de 4 Ohm.<br />
<br />
Il fonctionne avec une fréquence de commutation d'environ 32 kHz,<br />
de manière à ce que les commutations soient en-dehors de la bande audible.<br />
<br />
Le courant de crête à crête de l'ondulation résultant de la commutation doit être inférieur à 380 mA''pp''.<br />
<br />
[[Category:AudioAmp]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/EMVs/AudioAmp/fr/specificationsEMVs/AudioAmp/fr/specifications2014-01-21T11:56:59Z<p>Cof: /* Conversion DC/DC */</p>
<hr />
<div>{{TOC right}}<br />
<br />
= Spécifications de l'amplificateur audio =<br />
<br />
L'[[EMVs/AudioAmp|amplificateur]] reçoit un signal audio via un connecteur "jack".<br />
Il est alimenté par une tension de batterie et pilote un haut-parleur.<br />
<br />
[[File:System.svg|700px]]<br />
<br />
== Conversion analogique-numérique ==<br />
<br />
Le convertisseur A/D reçoit deux tensions analogiques (canaux droite et gauche) d'[http://fr.wikipedia.org/wiki/Niveau_(audio) amplitude maximale] de 0.5 V.<br />
Il transmet l'information numérisée à un circuit numérique programmable à travers un flux [http://fr.wikipedia.org/wiki/I2S I2S].<br />
<br />
== Gain ==<br />
<br />
Le circuit numérique reçoit le flux [http://fr.wikipedia.org/wiki/I2S I2S].<br />
Il convertit ce flux en 2 nombres binaires signés, un par canal.<br />
Ces signaux sont codés sur 24 bits<br />
<br />
Comme il n'y a qu'un haut-parleur, les deux canaux sont mélangés pour fournir un signal mono.<br />
Le signal mono est lui aussi signé et codé sur 24 bits.<br />
<br />
Le signal mono est multiplié par un gain, qui est un nombre 8 bits non-signé<br />
provenant de deux boutons rotatifs qui délivrent chacun 4 bits du gain.<br />
Le résultat de la multiplication est divisé par <math>2^8</math><br />
de manière à revenir à un nombre signé codé sur 24 bits.<br />
<br />
== Modulation PWM ==<br />
<br />
La [http://fr.wikipedia.org/wiki/PWM modulation PWM] se fait avec une période la plus proche possible de 100 kHz.<br />
L'horloge du circuit est à 66 MHz.<br />
<br />
Le signal signé codé sur 24 bits est transformé en un signal non-signé.<br />
Pour cela, il est décalé vers le haut de <math>2^{23}</math>.<br />
Le signal non-signé est alors divisé par une puissance de 2<br />
de manière à ce que sa gamme corresponde à celle du compteur en dents de scie du modulateur PWM.<br />
<br />
Le signal PWM est conditionné sous la forme de 2 signaux complémentaires (l'un étant l'inverse de l'autre)<br />
pour piloter un demi [http://fr.wikipedia.org/wiki/Pont_en_h pont en H].<br />
Afin d'éviter des court-circuits, les deux commandes doivent être séparées par un temps mort<br />
d'au moins 0.5 us:<br />
au moment où l'une des commandes passe à '0', l'autre doit attendre la durée du temps mort avant de commuter à '1'.<br />
<br />
Un deuxième modulateur fournit un rapport cyclique fixe pour le convertisseur DC/DC.<br />
Les spécifications de ce modulateur (fréquence, rapport cyclique) sont données dans la partie qui traite du convertisseur DC/DC.<br />
<br />
== Amplification ==<br />
<br />
L'amplificateur de puissance est de type [http://fr.wikipedia.org/wiki/Classes_de_fonctionnement_d%27un_amplificateur_%C3%A9lectronique#Classe_D classe D].<br />
<br />
Les signaux logiques (entre 0 V et 3.3 V) de PWM sont mis en forme de manière à pouvoir piloter les transistors de puissance du demi [http://fr.wikipedia.org/wiki/Pont_en_h pont en H].<br />
Ceci se fait à l'aide d'un circuit dédié à ce genre d'applications.<br />
<br />
Dans un premier temps, la deuxième branche du pont en H est remplacée par un diviseur capacitif.<br />
<br />
Le signal d'alimentation haché par le pont est lissé par un filtre passe-bas passif LC<br />
avant d'être amenené au haut-parleur.<br />
La fréquence de coupure de ce filtre est de 9 kHz.<br />
L'inductance du circuit LC est de 300 uH.<br />
<br />
== Conversion DC/DC ==<br />
<br />
Le [http://fr.wikipedia.org/wiki/Alimentation_%C3%A0_d%C3%A9coupage convertisseur DC/DC]<br />
est de type [http://fr.wikipedia.org/wiki/Convertisseur_Boost élévateur de tension].<br />
Il délivre une tension suffisante pour pouvoir fournir 12 W au le haut-parleur,<br />
lequel a une impédance de 4 Ohm.<br />
<br />
Il fonctionne avec une fréquence de commutation d'environ 32 kHz,<br />
de manière à ce que les commutations soient en-dehors de la bande audible.<br />
<br />
Le courant de crête à crête de l'ondulation résultant de la commutation doit être inférieur à 380 mA''pp''.<br />
<br />
[[Category:AudioAmp]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/EMVs/AudioAmp/boardsEMVs/AudioAmp/boards2014-01-21T08:13:18Z<p>Cof: Created page with "{{TOC right}} The following figure presents the prototyping system: 800px"</p>
<hr />
<div>{{TOC right}}<br />
<br />
The following figure presents the prototyping system:<br />
[[file:cabling.svg|800px]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/File:Cabling.svgFile:Cabling.svg2014-01-21T08:12:02Z<p>Cof: Audio amplifier boards and cabling</p>
<hr />
<div>Audio amplifier boards and cabling</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/EMVs/AudioAmpEMVs/AudioAmp2014-01-21T08:06:45Z<p>Cof: /* Organisation */</p>
<hr />
<div>{{TOC right}}<br />
<br />
The Audio amplifier project is a one day sneak preview of the electronics taught at the<br />
[http://electricite-mecanique.hevs.ch/ Industrial Systems] section of [http://www.hevs.edu/ HES-SO//Valais Wallis].<br />
As such, it presents a mixed analog/digital system.<br />
<br />
== Lab activity ==<br />
<br />
The system consists of:<br />
* an A/D converter which receives an audio signal<br />
* a digital circuit (FPGA) which mutiplies this signal by a gain and builds a Pulse Width Modulated (PWM) signal out of it<br />
* a class D amplifier which drives a loudspeaker from the PWM signal<br />
* a step-up circuit which generates a power supply voltage from a 12 V battery in order to have enough power to drive the loudspeaker<br />
<br />
The project is presented to the [http://www.emvs.ch/ EMVs] students.<br />
They are provided with [[EMVs/AudioAmp/fr/specifications|specifications in french]].<br />
<br />
== Organisation ==<br />
<br />
Some specific lab [[EMVs/AudioAmp/material|material]] is required additionally to the base lab equipment.<br />
The system is developed based on [[EMVs/AudioAmp/boards|prototyping boards]] which are also used for other labs.<br />
<br />
[[Category:AudioAmp]]</div>Cofhttps://wiki.hevs.ch/fsi/index.php5/EMVs/AudioAmp/fr/specificationsEMVs/AudioAmp/fr/specifications2014-01-21T08:04:24Z<p>Cof: /* Spécifications de l'amplificateur audio */</p>
<hr />
<div>{{TOC right}}<br />
<br />
= Spécifications de l'amplificateur audio =<br />
<br />
L'[[EMVs/AudioAmp|amplificateur]] reçoit un signal audio via un connecteur "jack".<br />
Il est alimenté par une tension de batterie et pilote un haut-parleur.<br />
<br />
[[File:System.svg|700px]]<br />
<br />
== Conversion analogique-numérique ==<br />
<br />
Le convertisseur A/D reçoit deux tensions analogiques (canaux droite et gauche) d'[http://fr.wikipedia.org/wiki/Niveau_(audio) amplitude maximale] de 0.5 V.<br />
Il transmet l'information numérisée à un circuit numérique programmable à travers un flux [http://fr.wikipedia.org/wiki/I2S I2S].<br />
<br />
== Gain ==<br />
<br />
Le circuit numérique reçoit le flux [http://fr.wikipedia.org/wiki/I2S I2S].<br />
Il convertit ce flux en 2 nombres binaires signés, un par canal.<br />
Ces signaux sont codés sur 24 bits<br />
<br />
Comme il n'y a qu'un haut-parleur, les deux canaux sont mélangés pour fournir un signal mono.<br />
Le signal mono est lui aussi signé et codé sur 24 bits.<br />
<br />
Le signal mono est multiplié par un gain, qui est un nombre 8 bits non-signé<br />
provenant de deux boutons rotatifs qui délivrent chacun 4 bits du gain.<br />
Le résultat de la multiplication est divisé par <math>2^8</math><br />
de manière à revenir à un nombre signé codé sur 24 bits.<br />
<br />
== Modulation PWM ==<br />
<br />
La [http://fr.wikipedia.org/wiki/PWM modulation PWM] se fait avec une période la plus proche possible de 100 kHz.<br />
L'horloge du circuit est à 100 MHz.<br />
<br />
Le signal signé codé sur 24 bits est transformé en un signal non-signé.<br />
Pour cela, il est décalé vers le haut de <math>2^{23}</math>.<br />
Le signal non-signé est alors divisé par une puissance de 2<br />
de manière à ce que sa gamme corresponde à celle du compteur en dents de scie du modulateur PWM.<br />
<br />
Le signal PWM est conditionné sous la forme de 2 signaux complémentaires (l'un étant l'inverse de l'autre)<br />
pour piloter un demi [http://fr.wikipedia.org/wiki/Pont_en_h pont en H].<br />
Afin d'éviter des court-circuits, les deux commandes doivent être séparées par un temps mort<br />
d'au moins 0.5 us:<br />
au moment où l'une des commandes passe à '0', l'autre doit attendre la durée du temps mort avant de commuter à '1'.<br />
<br />
Un deuxième modulateur fournit un rapport cyclique fixe pour le convertisseur DC/DC.<br />
Les spécifications de ce modulateur (fréquence, rapport cyclique) sont données dans la partie qui traite du convertisseur DC/DC.<br />
<br />
== Amplification ==<br />
<br />
L'amplificateur de puissance est de type [http://fr.wikipedia.org/wiki/Classes_de_fonctionnement_d%27un_amplificateur_%C3%A9lectronique#Classe_D classe D].<br />
<br />
Les signaux logiques (entre 0 V et 3.3 V) de PWM sont mis en forme de manière à pouvoir piloter les transistors de puissance du demi [http://fr.wikipedia.org/wiki/Pont_en_h pont en H].<br />
Ceci se fait à l'aide d'un circuit dédié à ce genre d'applications.<br />
<br />
Dans un premier temps, la deuxième branche du pont en H est remplacée par un diviseur capacitif.<br />
<br />
Le signal d'alimentation haché par le pont est lissé par un filtre passe-bas passif LC<br />
avant d'être amenené au haut-parleur.<br />
La fréquence de coupure de ce filtre est de 20 kHz.<br />
L'inductance du circuit LC est de 1 mH.<br />
<br />
== Conversion DC/DC ==<br />
<br />
Le [http://fr.wikipedia.org/wiki/Alimentation_%C3%A0_d%C3%A9coupage convertisseur DC/DC]<br />
est de type [http://fr.wikipedia.org/wiki/Convertisseur_Boost élévateur de tension].<br />
Il délivre une tension suffisante pour pouvoir fournir 12 W au le haut-parleur,<br />
lequel a une impédance de 4 Ohm.<br />
<br />
Il fonctionne avec une fréquence de commutation de 32 kHz,<br />
de manière à ce que les commutations soient en-dehors de la bande audible.<br />
<br />
Le courant de crête à crête de l'ondulation résultant de la commutation doit être inférieur à 380 mA''pp''.<br />
<br />
[[Category:AudioAmp]]</div>Cof