Go Down

### Topic: Feasibility analysis for check with ccd line sensor (Read 1 time)previous topic - next topic

#### jens38

##### Nov 04, 2011, 01:47 pm
Hi all,

I'm actually thinking about a project (very early status), which I want to realize:

Target :
check whether  a repetitive geometry in a endless metallic strip (stamped) is equal between two geometries.

Today's status :
Two photosensors with digital output fixed in a defined distance are looking on a part. The distance between both photosensors is exactly the pitch of the geometry, means that both photosensors should see always the same (digitally 0 or 1).
The part is in movement with a maximum speed of 15,3 m / min (= 254 mm / sec).
With the photosensors I control one point (two points if I add another pair of photosensors) within the geometry.
Check is done with Arduino, very simple logical comparison of the two signals from the photosensors, with a given tolerance (time during which a difference is allowed). One check cycle takes appr. 10 µ sec, means at maximum speed I have a resolution in the range of 0.002-0.003 mm.

Project:
Instead of using photosensors (and with this control only 1 point of the part) I have now the idea to use 2 ccd (or CMOS?) line sensors to check one line (40 mm max) with 2048 points(?)  at once. For sure with this the logical comparison becomes much more complicate (tolerance has to be not only in X-axis (sense of material flow), but also in Y-axis (over the width of the line sensor) and also the acquisition of the data from the sensors will take much more time (serial transmission between sensor and µ-Controller).
If we say that we want to check a range of 40 mm, and the sensor has 2048 (??) Elements, I will get an accuracy of 0.02 mm, which seems enough for the time being.
If we want to have the same accuracy (to be discussed) also in x-direction, means that we have to do a check every 79 µ sec.
Questions:
a)   Are there CCD (or CMOS) line sensors on the market which are giving a 1bit output per data element? I need only digital output (material present or not, black or white). This will eliminate the need of A/D converter, which will help for speed.
b)   How many elements do these sensors have? Is my assumption of 2048 realistic?
c)   what is the speed of
a.   serial transmission of these sensors to the µ-Controller
b.   time of acquisition of the complete line
d)   what kind of µ-Controller will I need to realize this. I presume that the Arduino is not the right one. Or?
e)   Is it possible to read the two line sensors at the same time? This is necessary as the parts cannot be stopped during the control.

I know this is a huge project, for sure far beyond my actual capability in electronics, but if the feasibility is assured I can go ahead with help of some professionals.

Jens
aka *frenchi*

Dell Latitude E5510
Arduino Duemilanove
Arduino Uno (2x)
Dog
Cat (2x)

#### ckiick

#1
##### Nov 04, 2011, 04:24 pm
If you are talking about the kind of CCD sensor that is in a barcode reader, for example, then you are talking about a pretty difficult project.  I've been trying to write some code that would interface to a barcode sensor on arduino, and have not been successful so far.  The timing is very tight, requiring the interface code to be written in assembler.

Quote
a)   Are there CCD (or CMOS) line sensors on the market which are giving a 1bit output per data element? I need only digital output (material present or not, black or white). This will eliminate the need of A/D converter, which will help for speed.

Not that I know of.  The barcode sensors are not color, but they are greyscale, giving
an analog reading for each pixel.  It's easy enough to convert to bits in software, but like you said, the A/D conversion is a bottleneck.  It might be possible to use a fast external A/D converter - I haven't looked into that.  Or maybe some kind of comparator.

Quote
b)   How many elements do these sensors have? Is my assumption of 2048 realistic?

Yes. A common barcode sensor has 2088 linear pixels.

Quote
c)   what is the speed of
a.   serial transmission of these sensors to the µ-Controller
b.   time of acquisition of the complete line

b) a couple of milliseconds

Quote
d)   what kind of µ-Controller will I need to realize this. I presume that the Arduino is not the right one. Or?

With an arduino is it barely possible, due to clock speed.  Something with a (much) faster clock would probably be easier.  I don't know what to recommend.

Quote
e)   Is it possible to read the two line sensors at the same time? This is necessary as the parts cannot be stopped during the control.

If you mean simultaneously, probably not with an arduino.  However, 2msec is not a lot of time to wait.  If the parts are moving, placing the two sensors at an offset could do the trick.

This would be a tough project to implement on an arduino.

#### Grumpy_Mike

#2
##### Nov 04, 2011, 11:08 pm
Quote
Are there CCD (or CMOS) line sensors on the market which are giving a 1bit output per data element? I

No they tend to be analogue, like this one:-
http://uk.farnell.com/hamamatsu/s10077/sensor-linear-image-3-3v/dp/1495581

Quote
what kind of µ-Controller will I need to realize this. I presume that the Arduino is not the right one.

Well with 2048 pixels then you don't have enough memory, bit if you convert this to a bit before you store it you can store all the data. I have use sensors like this on the old BBC micro and that uses a processor of the same sort of power as the arduino.

Quote
Is it possible to read the two line sensors at the same time?

If you have a voltage comparator on the output of the sensors you can read two bit in at a time by using the port manipulation method, but there should be no need to.

#### jens38

#3
##### Nov 07, 2011, 08:55 am

Means that there are still some problems challenges.

Quote

Quote
a)   Are there CCD (or CMOS) line sensors on the market which are giving a 1bit output per data element? I need only digital output (material present or not, black or white). This will eliminate the need of A/D converter, which will help for speed.

Not that I know of.  The barcode sensors are not color, but they are greyscale, giving
an analog reading for each pixel.  It's easy enough to convert to bits in software, but like you said, the A/D conversion is a bottleneck.  It might be possible to use a fast external A/D converter - I haven't looked into that.  Or maybe some kind of comparator.

Ok, this means I have to go deaper in A/D converter or comparator. But it seems that there are some very fast A/D converter available.

Quote

Quote
c)   what is the speed of
a.   serial transmission of these sensors to the µ-Controller
b.   time of acquisition of the complete line

b) a couple of milliseconds

Quote
d)   what kind of µ-Controller will I need to realize this. I presume that the Arduino is not the right one. Or?

With an arduino is it barely possible, due to clock speed.  Something with a (much) faster clock would probably be easier.  I don't know what to recommend.

Quote
e)   Is it possible to read the two line sensors at the same time? This is necessary as the parts cannot be stopped during the control.

If you mean simultaneously, probably not with an arduino.  However, 2msec is not a lot of time to wait.  If the parts are moving, placing the two sensors at an offset could do the trick.

This would be a tough project to implement on an arduino.

So, looks like I have to wait for the Arduino Due, or perhaps switch to another µ-controller. Will first establish the outline of the data acquisition before going further on this point.

Quote

Quote

what kind of µ-Controller will I need to realize this. I presume that the Arduino is not the right one.

Well with 2048 pixels then you don't have enough memory, bit if you convert this to a bit before you store it you can store all the data. I have use sensors like this on the old BBC micro and that uses a processor of the same sort of power as the arduino.

Interessting point. This will divide by 8 the data. Thanks for this hint.

Quote

Quote

Is it possible to read the two line sensors at the same time?

If you have a voltage comparator on the output of the sensors you can read two bit in at a time by using the port manipulation method, but there should be no need to.

This will not be possible, cause the speed of the parts may change over the time, and it will not be possible to move the sensor mecanically at every speed change.

Thanks a lot for your input. Will go ahead with my analysis (for the time being on a theoretical basis), but hopefully one day there will be a realisation on it.

Cheers.
aka *frenchi*

Dell Latitude E5510
Arduino Duemilanove
Arduino Uno (2x)
Dog
Cat (2x)

#### Grumpy_Mike

#4
##### Nov 07, 2011, 12:29 pm
Quote
This will not be possible, cause the speed of the parts may change over the time, and it will not be possible to move the sensor mecanically at every speed change.

I am not sure you understood this point as that response makes no sense. I am not suggesting any mechanical movement of the sensors, I was suggesting a method of reading in two bits simultaneous. This uses only software.

#### jens38

#5
##### Nov 07, 2011, 07:58 pm

Quote
This will not be possible, cause the speed of the parts may change over the time, and it will not be possible to move the sensor mecanically at every speed change.

I am not sure you understood this point as that response makes no sense. I am not suggesting any mechanical movement of the sensors, I was suggesting a method of reading in two bits simultaneous. This uses only software.

Hi Mike,

sorry for this mismatch, this is the result if one (I) is doing several thing at the same time. Shame on me.

My answer was relatet to a sentence from Chris from the previous post
Quote

If you mean simultaneously, probably not with an arduino.  However, 2msec is not a lot of time to wait.  If the parts are moving, placing the two sensors at an offset could do the trick.

Sorry for this.

Regarding your proposal I will check more in detail, cause it's indeed a possibility to compare both signals.

aka *frenchi*

Dell Latitude E5510
Arduino Duemilanove
Arduino Uno (2x)
Dog
Cat (2x)

#### nmz787

#6
##### Jan 07, 2012, 11:04 am
Hi, I'm trying to do the same thing. I was looking into using the hardware Timers to do the control line work, and an external high-speed ADC. It seems for your purpose, if you got the CCD to reliably output data, you could use a comparator to threshold the analog data into a 1 or 0 (white or black). If you streamed that data out to an SD card, or serial, I think the Arduino would work alright.

I am looking into using the hardware timers because a state machine would need to be optimized with assembly code, because the different IF statements would cause certain code loops to take longer than others... messing up the timing of the control lines to the sensor.

keep an eye on openSpectrometer.com for updates... though I may not be able to accomplish this with the Arduino, I do think its possible.

Go Up