## Previous sessions
- Session 1 : Powering the board, power use, first (bad) trigging and echoes (06 March 2016)
- Session 2 : Non-controlled pulsing, inverters, better echoes (11 March 2016)
- Session 3 : Getting controlled pulsing, but width not controlled (15 March 2016)
- Session 4 : Width of the pulses is getting controlled =) (19 March 2016)
- Session 4b : Simple data visualisation with BitScope (19 March 2016)
- Session 5 : moving the transducer to get the first image (20 March 2016)
- Session 6 : Getting a clinically usable image (28 March 2016)
- Session 7 : Getting cleaner images - code improvements (3 April 2016)
- Session 8 : Comparing acquisition speeds (3 May 2016)
## Today
- Getting an actual image of a phantom through the BitScope tool.
- Using the TGC
- Using the enveloppe detector (around 3.5MHz, but we used a 4MHz transducer.. still..)
#### Fantom 1
#### Fantom 2
In red is the noise that the BitScope "randomly" adds to the signal (the same as the noise pattern seen in the comparison above)
- Same as previously... Session 5
- Just adding the alim to feed TP4 (Analog gain of the TGC) -> around to 900mV and 40mA)
- Had to unplug TP4/5 and plug it into the transfo
- Layout out the fantoms:
- Same setup as Session 4, and same remarks apply.
- Not using the SPI, only Analog Gain, which we max. We can reduce the gain artificially in the software.
#### Give me files
- The code lies at
bitscope/full_image/Session_6a/acquire_image.py
to acquire a full image - The data for images is in the
bitscope/full_image/Session_6a/ExpX/raw_data/*.log
- Creating data files (.data) from the logs is at
bitscope/full_image/Session_6a/CreateImage.py
- Creating Nearest neighbours Scan Conversion is ```bitscope/full_image/Session_6a/CreateNN.py``
- Creating 4Tap is ```bitscope/full_image/Session_6a/CreateSC.py``
- Bulking image creations is at
bitscope/full_image/Session_6a/BatchImage
- Had to unplug TP4/5 and plug it into the transfo
- Had to feed in max V to the TP4 (Analog gain of the TGC) -> around to 900mV and 40mA)
- Gain formula: Gain(depth)= (1.9*(depth)^(0.6)/(Depth^(0.6))) -> it quite lowers the signal close to the transducer, and raises the end of the signal.
- Had to change the back and forth sweeping of the servo.. else the two sets of lines are intertwinned as you'll see with Session-6 data instead of Session-6a(
bitscope/full_image/Session_6/BatchImage
) - Bad noise was coming from the computer
- Some residual noise coming from the bitscope (the small signal between 100us and 250us):
- Plugging into the BBB
Getting an image from TP8 - A-Scan of the fantom, plus wall of the basin (200mV/div). TP4: 480mV / 41mA
## TrinketPro code
Code is at bitscope/TrinketProCode
/*
SimplePulse (simple way)
Using the Hackaday Trinket Pro.
Creates two contiguous pulses one after the other, then sleeps till the next time.
This example code is in the public domain. Inspired from Blink.
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
// a maximum of eight servo objects can be created
int pos = 60; // variable to store the servo position
void setup()
{
myservo.attach(5); // attaches the servo on pin 5 to the servo object
DDRB = B11111111; // set PORTB (digital 13~8) to outputs
}
void loop()
{
for(pos = 60; pos < 120; pos += 1) // goes from 60 degrees to 120 degrees
{ // in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(40); // waits 12ms for the servo to reach the position
PORTB = B00001000; // Pin 11
delayMicroseconds(pos); // microsecondes
PORTB = B00010000; // Pin 12 = pulse positif
__asm__("nop\n\t");
PORTB = B00100000; // Pin 13 = pulse negatif
delayMicroseconds(1);
//__asm__("nop\n\t""nop\n\t");
PORTB = B00000000;
delayMicroseconds(1000); // microsecondes
PORTB = B00001000; // Pin 11
delayMicroseconds(pos); // microsecondes
PORTB = B00010000; // Pin 12 = pulse positif
__asm__("nop\n\t");
PORTB = B00100000; // Pin 13 = pulse negatif
delayMicroseconds(1);
//__asm__("nop\n\t""nop\n\t");
PORTB = B00000000;
delay(10);
}
myservo.write(60); // tell servo to go to position in variable 'pos'
delay(1000); // waits 1000ms for the servo to reach the position
}