<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="en" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="nlm-ta">Sensors</journal-id>
<journal-title>Sensors</journal-title>
<issn pub-type="epub">1424-8220</issn>
<publisher>
<publisher-name>Molecular Diversity Preservation International (MDPI)</publisher-name></publisher></journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3390/s110303249</article-id>
<article-id pub-id-type="publisher-id">sensors-11-03249</article-id>
<article-categories>
<subj-group>
<subject>Article</subject></subj-group></article-categories>
<title-group>
<article-title>Three Realizations and Comparison of Hardware for Piezoresistive Tactile Sensors</article-title></title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Vidal-Verdú</surname><given-names>Fernando</given-names></name><xref ref-type="corresp" rid="c1-sensors-11-03249">*</xref></contrib>
<contrib contrib-type="author">
<name><surname>Oballe-Peinado</surname><given-names>Óscar</given-names></name></contrib>
<contrib contrib-type="author">
<name><surname>Sánchez-Durán</surname><given-names>José A.</given-names></name></contrib>
<contrib contrib-type="author">
<name><surname>Castellanos-Ramos</surname><given-names>Julián</given-names></name></contrib>
<contrib contrib-type="author">
<name><surname>Navas-González</surname><given-names>Rafael</given-names></name></contrib>
<aff id="af1-sensors-11-03249">Department of Electronics, University of Málaga, 29071 Málaga, Spain; E-Mails: <email>oballe@uma.es</email> (O.O.-P.); <email>jsd@uma.es</email> (J.A.S.-D.); <email>jcramos@uma.es</email> (J.C.-R.); <email>rjnavas@uma.es</email> (R.N.-G.)</aff></contrib-group>
<author-notes>
<corresp id="c1-sensors-11-03249">
<label>*</label>Author to whom correspondence should be addressed; E-Mail: <email>fvidal@uma.es</email>; Tel.: +34-952-133-325; Fax: +34-952-133-324.</corresp></author-notes>
<pub-date pub-type="collection">
<year>2011</year></pub-date>
<pub-date pub-type="epub">
<day>17</day>
<month>3</month>
<year>2011</year></pub-date>
<volume>11</volume>
<issue>3</issue>
<fpage>3249</fpage>
<lpage>3266</lpage>
<history>
<date date-type="received">
<day>17</day>
<month>1</month>
<year>2011</year></date>
<date date-type="rev-recd">
<day>10</day>
<month>3</month>
<year>2011</year></date>
<date date-type="accepted">
<day>14</day>
<month>3</month>
<year>2011</year></date></history>
<permissions>
<copyright-statement>© 2011 by the authors; licensee MDPI, Basel, Switzerland.</copyright-statement>
<copyright-year>2011</copyright-year>
<license>
<p>This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution license (http://creativecommons.org/licenses/by/3.0/).</p></license></permissions>
<abstract>
<p>Tactile sensors are basically arrays of force sensors that are intended to emulate the skin in applications such as assistive robotics. Local electronics are usually implemented to reduce errors and interference caused by long wires. Realizations based on standard microcontrollers, <underline>P</underline>rogrammable <underline>S</underline>ystems <underline>o</underline>n <underline>C</underline>hip (PSoCs) and <underline>F</underline>ield <underline>P</underline>rogrammable <underline>G</underline>ate <underline>A</underline>rrays (FPGAs) have been proposed by the authors for the case of piezoresistive tactile sensors. The solution employing FPGAs is especially relevant since their performance is closer to that of <underline>A</underline>pplication <underline>S</underline>pecific <underline>I</underline>ntegrated <underline>C</underline>ircuits (ASICs) than that of the other devices. This paper presents an implementation of such an idea for a specific sensor. For the purpose of comparison, the circuitry based on the other devices is also made for the same sensor. This paper discusses the implementation issues, provides details regarding the design of the hardware based on the three devices and compares them.</p></abstract>
<kwd-group>
<kwd>tactile sensors hardware</kwd>
<kwd>direct connection sensor-FPGA</kwd>
<kwd>PSoC</kwd></kwd-group></article-meta></front>
<body>
<sec sec-type="intro">
<label>1.</label>
<title>Introduction</title>
<p>Tactile sensors can be based on different principles, including capacitive, resistive or optical methods, and are oriented to a broad range of applications, for instance in assistive or industrial robotics or rehabilitation and medicine in general [<xref ref-type="bibr" rid="b1-sensors-11-03249">1</xref>]. The realization of the electronics depends on the specific approach and application, although there are a few major common concerns such as wiring, crosstalk or parasitic capacitors. Large tactile sensors with a high number of tactels (a tactel is a single sensing point on a tactile sensor array) and real-time operation are often required. Some pre-processing on the sensory plane results in a reduction of the amount of information to be transmitted to the central decision unit [<xref ref-type="bibr" rid="b2-sensors-11-03249">2</xref>–<xref ref-type="bibr" rid="b10-sensors-11-03249">10</xref>]. Moreover, detection and processing circuitry should be located near the sensor to avoid problems caused by long wiring runs. It also needs to have a low number of integrated circuits and I/O connections. This reduces the number of cables and allows it to be housed in hands and grippers.</p>
<p>Many tactile sensors have been implemented with technologies that allow the incorporation of circuitry on the same substrate [<xref ref-type="bibr" rid="b7-sensors-11-03249">7</xref>–<xref ref-type="bibr" rid="b10-sensors-11-03249">10</xref>]. These implementations achieve high spatial resolution, so they are suitable for applications such as Minimally Invasive Surgery (MIS), though they have also been developed for use in other environments such as industry. The circuitry implemented on the same substrate performs the signal conditioning. This is common in capacitive sensors because stray capacitors are a key issue, and amplifiers based on switched capacitors can be realized [<xref ref-type="bibr" rid="b8-sensors-11-03249">8</xref>]. Certain preprocessing for sensors able to detect normal and shear forces is also realized on chip, as well as switches to address the array. More complex processing can also be carried out such as that for preprocessing of the tactile image based on convolutions [<xref ref-type="bibr" rid="b10-sensors-11-03249">10</xref>]. Nevertheless, most tactile sensor systems or artificial skins are composed of patches that contain integrated circuits on a printed circuit board (PCB). Large areas can be covered with these patches that form a network of smart sensors and communicate with a central processing unit through a serial bus [<xref ref-type="bibr" rid="b3-sensors-11-03249">3</xref>,<xref ref-type="bibr" rid="b4-sensors-11-03249">4</xref>]. Different devices can be used as the core of the hardware in these patches as discussed in the following paragraphs.</p>
<p>ASICs to act as coprocessors for tactile sensors have been reported [<xref ref-type="bibr" rid="b5-sensors-11-03249">5</xref>,<xref ref-type="bibr" rid="b6-sensors-11-03249">6</xref>] and general purpose Integrated Circuits (ICs) have also been proposed for that task [<xref ref-type="bibr" rid="b11-sensors-11-03249">11</xref>]. They can undertake error reduction, compensate for interference and convert analog-to-digital. It is the best choice in terms of area and power efficiency. Moreover, slippage detection in manipulative tasks with hands or grippers has to be done in the range of 2–4 ms. This means the whole array of force sensors of the tactile sensor (tactels) has to be processed in this time (analog-to-digital conversion plus detection algorithm). The high dynamic performance of ASICs allows the detection of slippage [<xref ref-type="bibr" rid="b6-sensors-11-03249">6</xref>]. Unfortunately, ASICs are quite rigid and their programmability is low, so the possibility of updating their functionality once they are fabricated is limited.</p>
<p>Other implementations are based on microcontrollers [<xref ref-type="bibr" rid="b2-sensors-11-03249">2</xref>–<xref ref-type="bibr" rid="b4-sensors-11-03249">4</xref>]. This strategy usually requires a higher number of devices in the PCB board. This means that a large area is needed because of the space they take up as well as due to a more complex wiring. Furthermore, tactels are read and processed sequentially, hence the response time is poor and slippage detection for a piezoresistive sensor with a high number of tactels is not feasible. However, this approach allows the design to be updated, so the tasks to be carried out by the microcontroller can be changed simply by programming it again. Further improvements of the performance are achieved if the hardware is based on a PSoC. These devices have a set of analog and digital blocks to be configured by the user so hardware is reduced when compared to other standard microcontrollers. Nevertheless, the size of the array that can be addressed depends on the resources implemented on the PSoC and the number of input and output pins. Moreover, though the on-chip blocks allow some level of parallelism in the signal conditioning, programmed algorithms are executed in a sequential way.</p>
<p>The performance of a FPGA falls between these two previous strategies. They are flexible devices because they can be programmed, and at the same time they have a high dynamic performance due to the parallel processing they allow [<xref ref-type="bibr" rid="b12-sensors-11-03249">12</xref>]. The main advantage of this strategy is the possibility of performing quite complex pre-processing in real time. As the system becomes more and more complex, many tactile sensors are used, for instance in fingers and palms, so the huge amount of data provided by these sensors should be pre-processed for the main controller to be able to manage it in real time. On the other hand, FPGAs do not commonly have analog-to-digital converters. Therefore, the use of external converters could increase the complexity and cost of the circuitry.</p>
<p>This paper demonstrates an implementation that does not need such external converters. It is based on the direct connection of sensors to microcontrollers [<xref ref-type="bibr" rid="b13-sensors-11-03249">13</xref>]. Since the FPGAs have many I/O pins, they allow a very direct connection between the tactile sensor and the device. The smart sensor thus obtained is compact and powerful in terms of real time processing capability. This strategy was proposed by the authors in [<xref ref-type="bibr" rid="b14-sensors-11-03249">14</xref>], where an implementation based on active integrators was also proposed to cancel crosstalk and cope with large array signal conditioning. An implementation of this circuitry for a specific raw sensor is presented in this paper. Moreover, signal conditioning circuits based on a PSoC and a microcontroller have also been made for the same sensor for the purpose of analysis and comparison. These circuits are based on ideas previously presented in conferences and journal briefs [<xref ref-type="bibr" rid="b15-sensors-11-03249">15</xref>,<xref ref-type="bibr" rid="b16-sensors-11-03249">16</xref>]. The comparison is to be taken as an approximation, since final performance depends on many factors, for instance the PCB technology, the encapsulation of integrated circuits and electronic components, or the specific device chosen for the electronics to be based on.</p></sec>
<sec>
<label>2.</label>
<title>Piezoresistive Sensors and Crosstalk</title>
<p>Many tactile sensors are made of sheets of piezoresistive materials. The sheet covers an array of electrodes and we obtain an array of force sensing resistors as tactels. However, if a continuous sheet is used, parasitic resistors are present between tactels in the array. Moreover, crosstalk is present even if the array is composed of discrete force sensors once they are arranged in rows and columns [<xref ref-type="bibr" rid="b16-sensors-11-03249">16</xref>,<xref ref-type="bibr" rid="b17-sensors-11-03249">17</xref>]. The reason is that the addressing tracks are shared by many tactels and they form resistive paths that cause crosstalk. A circuitry that does not cancel crosstalk is depicted in <xref ref-type="fig" rid="f1-sensors-11-03249">Figure 1(a)</xref>, where an example of a parasitic path is also shown. Crosstalk due to the electrical addressing (there can be a certain crosstalk for mechanical reasons) is not registered if a single tactel is pressed. However, if a group of tactels are pressed crosstalk alters the readings for them. It can be hidden if the pressed area presents some symmetry with respect to rows or columns, but it is clear in the other cases. For instance, <xref ref-type="fig" rid="f1-sensors-11-03249">Figure 1(b)</xref> shows the output of a sensor with the signal conditioning in <xref ref-type="fig" rid="f1-sensors-11-03249">Figure 1(a)</xref> for a slash bar on it. Note that there is significant crosstalk. A few strategies to reduce the interference caused by these resistive paths have been proposed [<xref ref-type="bibr" rid="b18-sensors-11-03249">18</xref>], although the best one that is commonly implemented is <italic>grounding</italic>. Its goal consists in having the same voltage at both sides of parasitic resistors, so they are virtually short-circuited. Circuits that implement this strategy will be shown in the next sections.</p></sec>
<sec>
<label>3.</label>
<title>Electronics Based on a Microcontroller</title>
<p>The local electronics for a tactile array of <italic>N</italic> columns and <italic>M</italic> rows based on a microcontroller PIC18F4680 (Microchip) are shown at <xref ref-type="fig" rid="f2-sensors-11-03249">Figure 2(a)</xref>. These electronics are in charge of scanning the array, storing the data and sending it via CAN bus to a central processing unit. The latter has been a personal computer with a card to communicate with CANOpen for the results of this paper. This figure also illustrates the grounding strategy used to cancel crosstalk. Note that there is one operational amplifier per column in <xref ref-type="fig" rid="f2-sensors-11-03249">Figure 2(a)</xref>. Their purpose is to set the voltage <italic>V<sub>ref</sub></italic> at the tracks of all columns. Since the voltage of all rows that do not contribute to the output is also set to <italic>V<sub>ref</sub></italic>, any possible parasitic path is short circuited. The output voltage of a column is given by:
<disp-formula id="FD1">
<label>(1)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi mathvariant="italic">out</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mi>G</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mi mathvariant="italic">ij</mml:mi></mml:msub></mml:mrow></mml:mfrac>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi mathvariant="italic">ref</mml:mi></mml:msub>
<mml:mo>,</mml:mo>
<mml:mo> </mml:mo>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi mathvariant="italic">ref</mml:mi></mml:msub>
<mml:mo>≤</mml:mo>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi mathvariant="italic">out</mml:mi></mml:msub>
<mml:mo>≤</mml:mo>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi mathvariant="italic">DD</mml:mi></mml:msub></mml:mrow></mml:math></disp-formula>where <italic>R<sub>ij</sub></italic> is the force dependant resistance of the element <italic>ij</italic> in the array, and <italic>R<sub>G</sub></italic> is the resistance to set the gain of the transresistance amplifiers at the output of every column. 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mi>G</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi mathvariant="italic">DD</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi mathvariant="italic">ref</mml:mi></mml:msub></mml:mrow></mml:mfrac>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">ij</mml:mi>
<mml:mo> </mml:mo>
<mml:mtext>min</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> at <xref ref-type="fig" rid="f2-sensors-11-03249">Figure 2</xref>, where <italic>R</italic><sub><italic>ij</italic>min</sub> is the minimum value of <italic>R<sub>ij</sub></italic> determined by the pressure range of our application. Note that the output range is reduced by V<italic><sub>ref</sub></italic> in this implementation. However, the A/D converter in the microcontroller can be configured to take V<italic><sub>ref</sub></italic> as low voltage and still provide 10 bits if the excursion is higher than 3 volts. The operational amplifiers were chosen to be rail to rail to accomplish this, and the output can rise up to V<sub>DD</sub> −40 mV@5 V@25 °C typically. The range in resistance is therefore:
<disp-formula id="FD2">
<label>(2)</label>
<mml:math display="block">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mi>G</mml:mi></mml:msub>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi mathvariant="italic">ref</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi mathvariant="italic">DD</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi mathvariant="italic">ref</mml:mi></mml:msub></mml:mrow></mml:mfrac>
<mml:mo>≤</mml:mo>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mi mathvariant="italic">ij</mml:mi></mml:msub>
<mml:mo>≤</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mi>G</mml:mi></mml:msub>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi mathvariant="italic">ref</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi mathvariant="italic">DD</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi mathvariant="italic">ref</mml:mi></mml:msub></mml:mrow></mml:mfrac>
<mml:msup>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">NOB</mml:mi></mml:msup></mml:mrow></mml:math></disp-formula>where <italic>NOB</italic> means number of bits.</p>
<p>The operational amplifiers should provide enough current; the maximum demanded current being V<italic><sub>ref</sub></italic>/<italic>R</italic><sub><italic>ij</italic>min</sub>. The sourcing current of the LMV324 (Texas Instruments) is typically 80 mA for 5 V of supply voltage. Moreover, current switches in the analog multiplexor ADG734 (Analog Devices) must withstand a current <italic>N</italic> × V<italic><sub>ref</sub></italic>/<italic>R</italic><sub><italic>ij</italic>min</sub> and perform as very low resistances when they are ON. Their typical resistance value is 2.5 Ω so the error introduced is very low. Another source of error is the noise in V<italic><sub>ref</sub></italic>. The voltage reference REF3012 (Texas Instruments) with 0.2% accuracy is used to reduce this error. Note also that V<italic><sub>ref</sub></italic> is a reference, not a voltage supply, since it does not provide any current in static condition, so the error it causes is negligible once the transitory is concluded. The input offset of the Op-Amp (operational amplifier) is very small, only 1.7 mV typically, so the error it causes is also small. <xref ref-type="fig" rid="f2-sensors-11-03249">Figure 2(b)</xref> shows the measurement of a few resistors obtained from the electronics in <xref ref-type="fig" rid="f2-sensors-11-03249">Figure 2(a)</xref> <italic>versus</italic> the value registered by a multimeter. Thirty samples were taken for every resistor value. If the electronics is designed to be connected to a CAN bus, a regulator is required to provide the low voltages for the microcontroller. The regulator should be able to provide a current of (V<italic><sub>ref</sub></italic>/<italic>R</italic><sub><italic>ij</italic>min</sub>) × <italic>N</italic> plus the current demanded by the microcontroller and the other integrated circuits. A TL750L05 (Texas Instruments) was chosen for the results of this paper. All the integrated circuits were low power to reduce power consumption. Finally, the MCP2551 (Microchip) CAN bus transceiver was used to implement the interface to CAN bus. Please find performance data for this implementation in Section 7 and <xref ref-type="table" rid="t1-sensors-11-03249">Table 1</xref>.</p></sec>
<sec>
<label>4.</label>
<title>Electronics Based on a PSoC</title>
<p>A more compact implementation can be achieved if the electronics is based on a Programmable System on Chip (PSoC) instead of a standard microcontroller. These devices implement more analog blocks that can be used in the acquisition circuitry. For instance, operational amplifiers in <xref ref-type="fig" rid="f3-sensors-11-03249">Figure 3(a)</xref> are implemented on-chip. The architecture in <xref ref-type="fig" rid="f3-sensors-11-03249">Figure 3(a)</xref> is similar to that in <xref ref-type="fig" rid="f2-sensors-11-03249">Figure 2</xref> and <xref ref-type="disp-formula" rid="FD1">Equation (1)</xref> is valid. Nevertheless, due to the limitations in on-chip resources some differences are observed. First, just four columns can be implemented. Second, rows are addressed directly by output pins of the PSoC whose drivers can only provide the voltage levels related to logical high and low values. The output that is set at logical low level drives the active row and its corresponding pin [R<sub>w<italic>j</italic></sub> in <xref ref-type="fig" rid="f3-sensors-11-03249">Figure 3(a)</xref>] sinks the current <italic>I<sub>DRV</sub></italic>. The remaining output pins are set at high impedance. In this way it is possible to implement grounding if a few bias resistors and an auxiliary voltage reference are used. They are R<sub>bias</sub> and V<italic><sub>ref</sub></italic> in <xref ref-type="fig" rid="f3-sensors-11-03249">Figure 3</xref>. Note that this bias forces a voltage V<italic><sub>ref</sub></italic> at rows that are not driven and parasitic paths are short circuited because columns are also set to V<italic><sub>ref</sub></italic> due to the negative feedback in the amplifiers. As in <xref ref-type="fig" rid="f2-sensors-11-03249">Figure 2</xref>, limited gain and offset of these amplifiers are sources of error. Typical input offset voltage is as low as 1.3 mV for the PSoC of this paper (Cypress CY8C29466), so the error it introduces is negligible. The amplifiers also have to provide the current sunk by the external circuitry. There is an analog buffer between the Op-Amp output and the resistance R<sub>G</sub> in the feedback loop. This buffer is able to provide up to 40 mA.</p>
<p>V<italic><sub>ref</sub></italic> at non inverting input of the Op-Amps is generated internally because of the lack of I/O pins to take this reference from an external source or to share it with the biasing resistor network. Therefore, an extra voltage source is required to provide the intermediate voltage (V<italic><sub>ref</sub></italic> = 2.5 V). The latter can be obtained with a voltage regulator. Another alternative is the use of the reference V<italic><sub>ref</sub></italic> generated on-chip, although one pin is dedicated to providing access to it and the number of columns is reduced by one (three with the PSoC of this paper). The mismatching between voltage levels of biasing sources is another source of error. The external reference is generated with the regulator LP2985 (Texas Instruments) for the results of this paper. Another important equation is:
<disp-formula id="FD3">
<label>(3)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi mathvariant="italic">ref</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mi mathvariant="italic">bias</mml:mi></mml:msub></mml:mrow></mml:mfrac>
<mml:mo>+</mml:mo>
<mml:mfrac>
<mml:mn>4</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mo> </mml:mo>
<mml:mtext>min</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:mfrac>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>≤</mml:mo>
<mml:msub>
<mml:mi>I</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">DRV</mml:mi>
<mml:mtext>max</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></disp-formula>to guarantee that the current sunk by the row driver does not exceed the limit imposed by the PSoC (<italic>I</italic><sub><italic>DRV</italic>max</sub>). For the device of this paper this current is 25 mA. The output impedance of the row driver introduces error too, similarly to the ON resistance of analog switches at <xref ref-type="fig" rid="f2-sensors-11-03249">Figure 2</xref>. The maximum voltage at this output for 25 mA is 0.75 V, so a linear approximation results in around 30 Ω of output impedance. <xref ref-type="fig" rid="f3-sensors-11-03249">Figure 3(b)</xref> shows the measurement of a few resistors obtained from the electronics in <xref ref-type="fig" rid="f3-sensors-11-03249">Figure 3(a)</xref> <italic>versus</italic> the value registered by a multimeter. Thirty samples were taken for every resistor value.</p>
<p>The operational amplifiers are rail to rail, which improves the dynamic range. However, it is important to say that this range is half that of the converters, because the range of the input is from V<sub>DD</sub>/2 to V<sub>DD</sub>. Therefore, <xref ref-type="disp-formula" rid="FD2">Equation (2)</xref> is valid but <italic>NOB</italic> is one bit less than the resolution of the A/D converter on the PSoC. Finally, the PSoC implements resources to ease communication through serial bus (Universal Asynchronous Receiver-Transmitter, I2C and SPI). Please find performance data for this implementation in Section 7 and <xref ref-type="table" rid="t1-sensors-11-03249">Table 1</xref>.</p></sec>
<sec>
<label>5.</label>
<title>Electronics Based on an FPGA</title>
<sec>
<label>5.1.</label>
<title>Direct Connection with Passive Integrators</title>
<p>The following procedure describes how to connect a resistive sensor to a device with digital interface, <italic>i.e</italic>., a device designed to interface with digital signals. A thorough study of this strategy for resistive sensor-to-microcontroller interfaces is reported in [<xref ref-type="bibr" rid="b13-sensors-11-03249">13</xref>]. The approach is illustrated in <xref ref-type="fig" rid="f4-sensors-11-03249">Figure 4</xref>. In a first phase the capacitor is charged through the pin named “precharge/monitoring” at <xref ref-type="fig" rid="f4-sensors-11-03249">Figure 4(a)</xref>. In the second phase it is discharged. To do that, the pin “address/sink” at <xref ref-type="fig" rid="f4-sensors-11-03249">Figure 4</xref> is set to a digital low value and it sinks the current from the capacitor. A timer starts its count at this instant, and the voltage across the capacitor is monitored by the input with label “precharge/monitoring” at <xref ref-type="fig" rid="f4-sensors-11-03249">Figure 4(b)</xref>. When it takes a value V<sub>TL</sub> corresponding to a digital “0”, the count stops. The measured time is:
<disp-formula id="FD4">
<label>(4)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>R</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mi>S</mml:mi></mml:msub>
<mml:mi>C</mml:mi>
<mml:mo> </mml:mo>
<mml:mtext>ln</mml:mtext>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi mathvariant="italic">DD</mml:mi></mml:msub>
<mml:mo>/</mml:mo>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi mathvariant="italic">TL</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></disp-formula>where V<sub>DD</sub> is the voltage across the capacitor at the beginning of the discharging phase. Note that the resistance can be obtained from <xref ref-type="disp-formula" rid="FD4">Equation (4)</xref> once <italic>T</italic><sub>R</sub> is measured. <xref ref-type="fig" rid="f4-sensors-11-03249">Figure 4(c)</xref> shows the voltage across the capacitor and the trigger signal to stop the count in the discharging phase measured with the scope for a given resistance value.</p>
<p>Regarding pre-processing of tactile data on local electronics, slippage detection is the task with the highest dynamic requirements. Specifically, it is detected at frequencies around 250 Hz [<xref ref-type="bibr" rid="b6-sensors-11-03249">6</xref>]. Therefore, we should be able to carry out the A/D conversion of a whole array in the range of 2–4 ms. Since we can perform many A/D conversions in parallel, this does not mean we should read the array in 4 ms/(<italic>M</italic> × <italic>N</italic>) where <italic>M</italic> × <italic>N</italic> is the number of tactels. Instead, we have to read the array in 4 ms/<italic>N</italic>, where <italic>N</italic> is the number of columns in the array, as the next section describes. This means the time constant is very small and trigger noise effects are negligible, so the resolution of the time to digital conversion is given by [<xref ref-type="bibr" rid="b13-sensors-11-03249">13</xref>]:
<disp-formula id="FD5">
<label>(5)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi mathvariant="italic">ENOB</mml:mi>
<mml:mo>≈</mml:mo>
<mml:mi mathvariant="italic">lb</mml:mi>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi mathvariant="italic">CLK</mml:mi></mml:msub>
<mml:mi>C</mml:mi>
<mml:mo> </mml:mo>
<mml:mtext>ln</mml:mtext>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi mathvariant="italic">DD</mml:mi></mml:msub>
<mml:mo>/</mml:mo>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi mathvariant="italic">TL</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mo>Δ</mml:mo>
<mml:mi>R</mml:mi></mml:mrow>
<mml:mi>S</mml:mi></mml:msub></mml:mrow>
<mml:mo>}</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula>where <italic>ENOB</italic> means Effective Number Of Bits, <italic>lb</italic> is the binary logarithm, and Δ<italic>R</italic><sub>S</sub> is the range of the resistance read from the tactile sensor. For a given Δ<italic>R</italic><sub>S</sub> and a required resolution we determine the value of <italic>C</italic> and <italic>f<sub>CLK</sub></italic>.</p></sec>
<sec>
<label>5.2.</label>
<title>Interface for Low-Medium Size Arrays</title>
<p><xref ref-type="fig" rid="f5-sensors-11-03249">Figure 5</xref> shows a direct interface to a tactile sensor. The high number of I/O pins of the device is exploited to address the tactels. The array is read as follows. First, the capacitors <italic>C</italic><sub>0</sub>...<italic>C<sub>j</sub></italic>...<italic>C</italic><sub>N</sub> are pre-charged by setting pins C<sub>L0</sub>...C<sub>L<italic>j</italic></sub>...C<sub>LN</sub> to ‘1’ and the remaining I/O pins to HZ. Then, a whole row is selected by setting its corresponding I/O pins to ‘0’. For instance, pins R<sub><italic>i</italic>0</sub>...R<italic><sub>ij</sub></italic>...R<sub><italic>i</italic>N</sub> are set to ‘0’ while the remaining “select” I/O pins are set to HZ. The capacitors are discharged and the voltages across them are monitored by pins C<sub>L0</sub>...C<sub>L<italic>j</italic></sub>...C<sub>LN</sub>, which are set to HZ. A set of timers are started in the FPGA at the beginning of the discharging phase and their counts are stopped when the low threshold V<sub>TL</sub> is reached at the related column pins. Therefore, a whole row is read in parallel. Note that there is a dedicated pin per tactel in the array. It is not possible to address a whole row with a pin only because the tactels become connected to each other and the charge in the capacitors is redistributed among them by many different resistive paths. An implementation with isolated tactels is possible, for instance [<xref ref-type="bibr" rid="b19-sensors-11-03249">19</xref>] reports a sensor with 272 tactels that are addressed with a track per tactel plus a common electrode.</p>
<p>To obtain the resistance <italic>R<sub>ij</sub></italic> from <xref ref-type="disp-formula" rid="FD4">Equation (4)</xref> we have to know the values of <italic>C</italic>, V<sub>DD</sub> and V<sub>TL</sub>. However, we ignore their exact value, and they can drift with time, power voltage supply or temperature. A calibration procedure can be implemented to compensate such lack of knowledge and/or interferences. The simplest consists in using calibration resistors, like those labeled <italic>R</italic><sub>c1</sub>,...<italic>R</italic><sub>c<italic>j</italic></sub>...<italic>R</italic><sub>cN</sub> at <xref ref-type="fig" rid="f5-sensors-11-03249">Figure 5</xref>. The whole set of calibration resistors is read as a row of the tactile array. Then the resistance after calibration is computed as:
<disp-formula id="FD6">
<label>(6)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mi mathvariant="italic">ij</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi mathvariant="italic">Dj</mml:mi></mml:msub>
<mml:mo>/</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi mathvariant="italic">Dcj</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mi mathvariant="italic">cj</mml:mi></mml:msub></mml:mrow></mml:math></disp-formula>where <italic>t<sub>Dj</sub></italic> and <italic>t<sub>Dcj</sub></italic> are the contents of the timers in the FPGA corresponding to the count of the discharging times for the resistor R<italic><sub>ij</sub></italic> and the calibration resistor R<italic><sub>cj</sub></italic> respectively. A two-point calibration is better but it requires another set of resistors for calibration. The calibration procedure also takes time, however we can do it once per tactile image frame, or even at a lower rate to increase the dynamic performance.</p>
<p>As in the case of the other circuitry described above, the impedance associated to the pins R<sub>00</sub>,…R<italic><sub>ij</sub></italic>,…R<italic><sub>MN</sub></italic> in the FPGA introduces an error. This impedance is in series with the resistance R<italic><sub>ij</sub></italic> that is being measured so it is added to the result of the measurement in the simplest case. We can consider this impedance approximately constant because it is associated to the channel of an NMOS transistor working in the linear region. If we use the calibration procedure the error is minimum for resistances close to the calibration one. Another source of error is the finite impedance of the inputs C<sub>L0</sub>,…C<sub>L<italic>j</italic></sub>,…C<sub>L<italic>N</italic></sub> when they are set to HZ to monitor the voltage drop in the capacitor. A leakage current in the order or 10uA is present at this input.</p>
<p>The total number of I/O pins in <xref ref-type="fig" rid="f5-sensors-11-03249">Figure 5</xref> dedicated to address the tactile sensor is <italic>M</italic> × <italic>N</italic> + 2 × <italic>N</italic>. This limits the size of the array that can be addressed in this way. For instance, an array of 8 × 8 tactels requires 96 pins of the FPGA to implement its interface. To obtain the results of this paper we have used a Spartan 3AN-50 (Xilinx) with 108 I/O pins, thus it is possible to implement this strategy. Its main advantage is that the number of integrated circuits is only one, so the interface is very compact. However, there are a high number of tracks and pins to connect and the PCB is more complex.</p></sec>
<sec>
<label>5.3.</label>
<title>Interface for Large Arrays</title>
<p>If the tactile array has a high number of tactels, the strategy in <xref ref-type="fig" rid="f5-sensors-11-03249">Figure 5</xref> is not feasible. For instance, up to 288 pins are required to implement the interface with an array of 16 × 16 tactels. We propose the use of active instead of passive integrators to implement the direct connection for this case. <xref ref-type="fig" rid="f6-sensors-11-03249">Figure 6</xref> shows the implementation for a single resistive sensor. The concept is the same as for the use of passive integrators, in <xref ref-type="fig" rid="f6-sensors-11-03249">Figure 6(a)</xref> the capacitor is charged, and it is discharged in <xref ref-type="fig" rid="f6-sensors-11-03249">Figure 6(b)</xref> with a constant current given by <italic>i<sub>D</sub></italic> = <italic>V<sub>DD</sub></italic>/<italic>R<sub>S</sub></italic> (note the linear discharge at <xref ref-type="fig" rid="f6-sensors-11-03249">Figure 6(c)</xref>). Nevertheless, there are some differences. First, we need to ‘turn off’ the operational amplifier in the charging phase of the capacitor because otherwise its output interferes in the charging and it is not completed. So we need an amplifier with ‘shutdown’ input and a dedicated pin of the FPGA to address it. Second, another output of the FPGA is devoted to clamp the non inverting input of the amplifier to a voltage close to ground in the charging phase. The charge would be completed without this clamp but the time to charge the capacitor would depend on the value of the resistor. Therefore, to reduce the time for the analog to digital conversion the use of this clamp is recommended. However, it can be removed in the case of low dynamic requirements to reduce the number of pins of the FPGA dedicated to the analog to digital conversion.</p>
<p><xref ref-type="fig" rid="f7-sensors-11-03249">Figure 7</xref> shows the proposal to implement the interface with the tactile sensor in this case. Passive integrators are replaced by active ones and we obtain a circuitry with meaningful similarities to <xref ref-type="fig" rid="f2-sensors-11-03249">Figures 2(a)</xref> or <xref ref-type="fig" rid="f3-sensors-11-03249">3(a)</xref>. Note that the pin to shutdown the amplifiers is shared by them. Note also that columns in the array are virtually grounded due to the negative feedback loop implemented by the active integrators. This means we can follow the usual strategy in <xref ref-type="fig" rid="f2-sensors-11-03249">Figures 2(a)</xref> and <xref ref-type="fig" rid="f3-sensors-11-03249">3(a)</xref> to short circuit the resistors that are not selected and avoid that they contribute with parasitic currents to the output. This can be done as follows. In a first phase, the selection pins R<sub>w0</sub>...R<sub>w<italic>i</italic></sub>...R<sub>wM</sub> are set to ‘0’. The tactile array and the FPGA share the ground, therefore a ‘0’ at these pins means this voltage is almost 0 and the resistors of the whole array are short circuited. At the same time pins C<sub>L0</sub>...C<sub>L<italic>j</italic></sub>...C<sub>LN</sub> are set to ‘1’ (voltage V<sub>DD</sub>), C<sub>P0</sub>...C<sub>P<italic>j</italic></sub>...C<sub>PN</sub> are set to ‘0’, shutdown is set to ‘1’ and the capacitors C<sub>0</sub>...C<italic><sub>j</sub></italic>...C<sub>N</sub> are charged to a voltage V<sub>DD</sub> across them. In the second phase, the set of column timers start their counts, and a row is selected. For instance R<sub>w<italic>i</italic></sub> is selected and there is a voltage drop V<sub>DD</sub> across tactels R<sub><italic>i</italic>0</sub>...R<italic><sub>ij</sub></italic>...R<sub><italic>i</italic>N</sub>. The amplifiers are turned on by setting shutdown to ‘0’. Pins C<sub>L0</sub>...C<sub>L<italic>j</italic></sub>...C<sub>LN</sub> and C<sub>P0</sub>...C<sub>P<italic>j</italic></sub>...C<sub>PN</sub> are now at HZ. Therefore, currents <italic>i<sub>Dj</sub></italic> = <italic>V<sub>DD</sub></italic>/<italic>R<sub>ij</sub></italic> where <italic>j</italic> = 1…<italic>N</italic> flow into the integrators, and the voltages at C<sub>L0</sub>...C<sub>L<italic>j</italic></sub>...C<sub>LN</sub> decrease. They decrease until threshold V<sub>TL</sub> is reached at every pin C<sub>L<italic>j</italic></sub>, then the count of the corresponding timer stops. At this time C<sub>P<italic>j</italic></sub> is set to ‘0’ to avoid that the voltage at the inverting input of the amplifier grows and generates interferences in tactels of the same row. We can obtain the value of the resistance from:
<disp-formula id="FD7">
<label>(7)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mi mathvariant="italic">ij</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi mathvariant="italic">DD</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi mathvariant="italic">DD</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi mathvariant="italic">TL</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfrac>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi mathvariant="italic">Dj</mml:mi></mml:msub></mml:mrow></mml:math></disp-formula>where <italic>t<sub>Dj</sub></italic> is the time measured by the timer. If this time is short enough, <italic>i.e</italic>., the time constant is small enough, we can neglect the trigger noise at threshold V<sub>TL</sub> and take into account only quantization noise to obtain the resolution given by:
<disp-formula id="FD8">
<label>(8)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi mathvariant="italic">ENOB</mml:mi>
<mml:mo>≈</mml:mo>
<mml:mi mathvariant="italic">lb</mml:mi>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi mathvariant="italic">CLK</mml:mi></mml:msub>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>j</mml:mi></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi mathvariant="italic">DD</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi mathvariant="italic">TL</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi mathvariant="italic">DD</mml:mi></mml:msub></mml:mrow></mml:mfrac>
<mml:mo stretchy="false">)</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mo>Δ</mml:mo>
<mml:mi>R</mml:mi></mml:mrow>
<mml:mi mathvariant="italic">ij</mml:mi></mml:msub></mml:mrow>
<mml:mo>}</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula></p>
<p>Note that a high current flows now from pin R<sub>w<italic>i</italic></sub>. A current up to 24 mA can be sourced by these pins for the device of the prototype of this paper. This current is sunk by the output of the Op-Amp, so it must be chosen to accomplish this. Note also that its output must be rail to rail if the supply voltage is the same as for the FPGA. The TLV2475 (Texas Instruments) is able to sink 10 mA at 180 mV off the rail. The limit of 24 mA in sourcing current from the pins that select the active row imposes the lower limit of the resistance that can be measured which is <italic>R</italic><sub><italic>ij</italic>min</sub> = <italic>N</italic> × <italic>V<sub>DD</sub></italic>/24 mA. For a target <italic>ENOB</italic> the upper limit in the range of the resistances that can be measured is derived from <xref ref-type="disp-formula" rid="FD8">Equation (8)</xref>. Note that there is a tradeoff here with the conversion time since the larger the value of R<italic><sub>ij</sub></italic> is, the larger the discharging time <italic>t<sub>Dj</sub></italic> in <xref ref-type="disp-formula" rid="FD7">Equation (7)</xref>. It is possible to reduce the discharging time while preserving the resolution given by <xref ref-type="disp-formula" rid="FD8">Equation (8)</xref> if a smaller capacitance is chosen for C<italic><sub>j</sub></italic> (note that the result of <xref ref-type="disp-formula" rid="FD8">Equation (8)</xref> is the same because ΔR<italic><sub>ij</sub></italic> has increased). Nevertheless, the time constant is reduced in this way for small resistor values and the approximation of neglecting the trigger noise is less valid. <xref ref-type="fig" rid="f7-sensors-11-03249">Figure 7(b)</xref> shows the result of measuring a few resistors with the electronics in <xref ref-type="fig" rid="f7-sensors-11-03249">Figure 7(a)</xref> <italic>versus</italic> the data from a multimeter. The data was obtained by <italic>f<sub>CLK</sub></italic> = 50 MHz, C<italic><sub>j</sub></italic> = 50 nF, R<italic><sub>ijmin</sub></italic> = 2.2 KΩ and R<italic><sub>ijmax</sub></italic> = 9.927 KΩ. The time invested to scan the 16 × 16 array is 5.5 ms. The standard deviation for the resistor of 2.2 KΩ is 1.18 Ω, so the approximation of neglecting the trigger noise is valid.</p>
<p>Similarly to the case with passive integrators, the impedance of the pin R<sub>w<italic>i</italic></sub> introduces an error, although this pin is sourcing the current now and it is set to a logical high value, so the parasitic resistor is that associated to the channel of the high side MOS transistor in the output buffer. It can be considered constant if the transistor works in linear region. This resistance depends on the specific output buffer that is chosen but it is around 25 Ω for 16 mA and up to 37.5 Ω for 25 mA (estimated from values of V<sub>OH</sub> and I<sub>OH</sub> provided in the datasheet). Performance data for the implementations described above may be found in the following section and <xref ref-type="table" rid="t1-sensors-11-03249">Table 1</xref>.</p></sec></sec>
<sec sec-type="discussion">
<label>7.</label>
<title>Discussion</title>
<p><xref ref-type="fig" rid="f8-sensors-11-03249">Figure 8</xref> shows photographs of prototypes of electronics based on Microcontroller, PSoC and FPGA. They are connected to the same piezoresistive tactile sensor [<xref ref-type="bibr" rid="b20-sensors-11-03249">20</xref>], although the PSoC is not able to scan the whole array (the detail in the figure corresponding to the PSoC shows an implementation where the PSoC is the only IC on the PCB and the electrodes are arranged to resemble the shape of a fingertip). The output of these sensors for different letter-shaped profiles on them is shown on the left of <xref ref-type="fig" rid="f8-sensors-11-03249">Figure 8</xref>. Moreover, <xref ref-type="table" rid="t1-sensors-11-03249">Table 1</xref> presents results obtained with these electronics, where the transceivers are not counted in the number of ICs required. As mentioned in the introduction, the comparison should be made with care because different alternatives could be followed in every case. Nevertheless, it provides interesting information for hardware designers.</p>
<p><xref ref-type="table" rid="t1-sensors-11-03249">Table 1</xref> also includes data for another two proposals. First, the circuitry in <xref ref-type="fig" rid="f2-sensors-11-03249">Figure 2(a)</xref> was designed in a straightforward way and an analog multiplexor was chosen to drive the rows. However, it is possible to implement the strategy in <xref ref-type="fig" rid="f3-sensors-11-03249">Figure 3(a)</xref> and replace the multiplexor with an array of resistors. This would save four ICs and some area and power consumption. However, the inputs sink up to 8.5 mA for a voltage drop V<sub>OL</sub> = 0.6 V. This means that there will be larger limitations in the range of resistance that can be measured and the errors due to the output impedance will be larger than those in the implementation of <xref ref-type="fig" rid="f2-sensors-11-03249">Figure 2(a)</xref>. Since the PIC18F4680 has 11 A/D channels, it is also possible to take off the multiplexor MC14067 if the number of columns to address is lower than eleven. Note that this alternative reduces the number of integrated circuits to five without the transceiver. Second, the implementation in Section 5.2 was tested with a general purpose development card. Some data such as power or area consumption cannot be provided for this reason but other meaningful data is worth including in the table. The data marked with an asterisk are estimations from the datasheet.</p>
<p>The implementation based on the PIC has the best performance in resolution and power consumption. It is also able to scan quite large arrays of 16 × 16 tactels, although it is the less compact. The implementation based on the PSoC is very compact due to the resources implemented on chip and to the high driving capability of the I/O pins. The CY8C29446 has 12 configurable analog blocks. Many functions can be implemented with these blocks and are available as user modules like Delta-Sigma, Successive Approximation or Incremental Analog to Digital converters and programmable amplifiers. Moreover, the blocks can be configured by the designer if there is not a module in the library, which was the case in <xref ref-type="fig" rid="f3-sensors-11-03249">Figure 3(a)</xref>. The dynamic performance can be improved if more than one converter is implemented to work in parallel. This is especially true for low resolution converters. For instance, the 14 × 4 array is scanned in 1.36 ms if four 6 bit successive approximation converters are used (the effective resolution is 5 bits, as explained in Section 4). The power consumption shown in <xref ref-type="table" rid="t1-sensors-11-03249">Table 1</xref> was measured when low value resistors of 1.68 KΩ where connected at the output to simulate the access to a row whose tactels have a high pressure on them. Note that the power consumption of the PSoC is similar to that shown by the PIC in absolute terms. However, the implementation based on PSoC consumes approximately five times per tactel more than the implementation based on PIC. This is due in part to the fact that V<italic><sub>ref</sub></italic> is 2.5 V in <xref ref-type="fig" rid="f3-sensors-11-03249">Figure 3(a)</xref> while it is 1.3 V in <xref ref-type="fig" rid="f2-sensors-11-03249">Figure 2(a)</xref>. The maximum resolution achieved is 8 bits to scan the 14 × 4 array in 31.8 ms, while the PIC scans 16 × 16 tactels in 15.6 ms with 10 bits of resolution.</p>
<p>Although a few tradeoffs between input range, resolution and speed are present, the implementation based on direct connection to an FPGA is the fastest. It was designed for a resolution of eight bits and an input range up to 8 KΩ. Larger input ranges can be achieved preserving the dynamic requirements with smaller capacitors, but effective resolution could be less for low resistance values corresponding to high pressures. The FPGA is more expensive than the PIC and the PSOC, and the PCB has four layers. The implementation with active integrators needs five ICs, a number higher that for those based on PSoC or on direct connection with passive integrators, but lower than for the implementation with the PIC. The power consumption per tactel is considerably lower than that with the PSoC and twice that obtained with the PIC. It also requires a four layer PCB. It is particularly interesting to note the possibility of implementing concurrency on the FPGA. This allows a very high dynamic performance to be obtained and algorithms with high requirements in terms of speed, such as slippage detection, can be dealt with [<xref ref-type="bibr" rid="b6-sensors-11-03249">6</xref>,<xref ref-type="bibr" rid="b21-sensors-11-03249">21</xref>].</p>
<p>Another test was carried out to examine the performance of the implemented circuits in the crosstalk cancelation. A resistor of high value was surrounded by resistors of low value in an array with shared tracks to address rows and columns that model a tactile sensor. This was considered preferable to making it with a tactile sensor to isolate crosstalk caused by electrical and mechanical sources. Crosstalk was not observed in any case, it was smaller than a Least Significant Bit. However, crosstalk was very significant if the electronics in <xref ref-type="fig" rid="f1-sensors-11-03249">Figure 1(a)</xref> was used instead of the others.</p>
<p>Finally, despite the circuitry being designed to minimize errors, it is worth highlighting here that many raw piezoresistive tactile sensors based on conductive rubbers or polymers show non linearity, hysteresis, drift and poor repeatability [<xref ref-type="bibr" rid="b20-sensors-11-03249">20</xref>]. The powerful electronics based on FPGAs provides hardware able to carry out complex computations in a short time and effectively compensate these errors as much as possible. Moreover, despite the fact that the intelligence of the sensor can cancel many errors, the effective resolution of the resulting sensor will be less than that predicted without taking into account the limitations of the raw sensor. This could justify the choice of a circuitry with an analog to digital converter of lower resolution. However, another significant issue has to be observed. It is the nonlinear relationship between the force and the resistance the raw sensor shows. Moreover, note that the relationship between the output voltage (the input of the A/D converter) and the resistance R<italic><sub>ij</sub></italic> is not linear in <xref ref-type="disp-formula" rid="FD1">Equation (1)</xref>. This nonlinearity can compensate that imposed by the raw sensor between force and resistance, but we will have different responses depending on the specific implementation [<xref ref-type="bibr" rid="b20-sensors-11-03249">20</xref>]. Nevertheless, the non linear behaviour between the measured (the pressure) and the input of the A/D converter has to be taken into account to evaluate the impact of the limited resolution of the A/D conversion.</p></sec>
<sec sec-type="conclusions">
<label>8.</label>
<title>Conclusions</title>
<p>Some general conclusions may be drawn from the data obtained for the three discussed approaches, although they need to be qualified by other aspects as done in the previous section. The shortest scanning time is obtained by the implementation based on the FPGA, while that based on the PSoC obtains the longest and the PIC-based one gives a time that is in between and provides the highest resolution in number of bits. Nevertheless, very short scanning times can be achieved with the PSoC for low resolutions. Power consumption per tactel is also greater for the PSoC-based implementation than for the others, and the PIC-based implementation consumes the least. However, the most compact realization is achieved by the PSoC, although a smaller number of tactels can be addressed. The implementation based on FPGAs is also quite compact but it needs four-layer PCBs. This fact, together with the price of the main integrated circuit, makes the cost of the latter higher than the hardware based on the PIC or the PSoC. Finally, it is worth mentioning that the implementation based on FPGAs has a high degree of parallelism in the proposed analog-to-digital conversion and in the algorithms running on it, which is a key issue in real time operation.</p></sec></body>
<back>
<ack>
<p>The authors would like to thank CIDETEC for providing the piezoresistive material. This work has been partially funded by the Spanish Government under contracts TEC2006-12376 and TEC2009-14446.</p></ack>
<ref-list>
<title>References</title>
<ref id="b1-sensors-11-03249"><label>1.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Dahiya</surname><given-names>RS</given-names></name><name><surname>Metta</surname><given-names>G</given-names></name><name><surname>Valle</surname><given-names>M</given-names></name><name><surname>Sandini</surname><given-names>G</given-names></name></person-group><article-title>Tactile Sensing-From Humans to Humanoids</article-title><source>IEEE Trans. Robot</source><year>2010</year><volume>1</volume><fpage>1</fpage><lpage>19</lpage></citation></ref>
<ref id="b2-sensors-11-03249"><label>2.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Choi</surname><given-names>B</given-names></name><name><surname>Choi</surname><given-names>HR</given-names></name><name><surname>Kang</surname><given-names>S</given-names></name></person-group><article-title>Development of Tactile Sensors for Detecting Contact Force and Slip</article-title><conf-name>Proceedings of the 2005 IEE International Conference on Intelligent Robots and Systems</conf-name><conf-loc>Edmonton, AB, Canada</conf-loc><conf-date>2–6 August 2005</conf-date><fpage>1677</fpage><lpage>1983</lpage></citation></ref>
<ref id="b3-sensors-11-03249"><label>3.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Göger</surname><given-names>D</given-names></name><name><surname>Weiss</surname><given-names>K</given-names></name><name><surname>Burghart</surname><given-names>C</given-names></name><name><surname>Wörn</surname><given-names>H</given-names></name></person-group><article-title>Sensitive Skin for a Humanoid Robot</article-title><conf-name>Proceedings of the 2006 International Conference on Human-Centered Robotic Systems</conf-name><conf-loc>Munich, Germany</conf-loc><conf-date>6–7 October 2006</conf-date></citation></ref>
<ref id="b4-sensors-11-03249"><label>4.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Cannata</surname><given-names>G</given-names></name><name><surname>Maggliali</surname><given-names>M</given-names></name></person-group><article-title>Processing of Tactile/Force Measurements for a Fully Embedded Sensor</article-title><conf-name>Proceedings of the 2006 IEEE International Conference on Multisensor Fusion and Integration for Intelligent Systems</conf-name><conf-loc>Heidelberg, Germany</conf-loc><conf-date>3–6 September 2006</conf-date><fpage>160</fpage><lpage>166</lpage></citation></ref>
<ref id="b5-sensors-11-03249"><label>5.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Iwashita</surname><given-names>A</given-names></name><name><surname>Shimojo</surname><given-names>M</given-names></name></person-group><article-title>Development of a Mixed Signal LSI for Tactile Data Processing</article-title><conf-name>Proceedings of the 2004 IEEE International Conference on Systems, Man and Cybernetics</conf-name><conf-loc>The Hague, The Netherlands</conf-loc><conf-date>10–13 October 2004</conf-date><volume>5</volume><fpage>4408</fpage><lpage>4413</lpage></citation></ref>
<ref id="b6-sensors-11-03249"><label>6.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Maldonado-López</surname><given-names>R</given-names></name><name><surname>Vidal-Verdú</surname><given-names>F</given-names></name><name><surname>Liñán</surname><given-names>G</given-names></name><name><surname>Rodríguez-Vázquez</surname><given-names>A</given-names></name></person-group><article-title>Integrated Circuitry to Detect Slippage Inspired by Human Skin and Artificial Retinas</article-title><source>IEEE Trans. Circ. Syst</source><year>2009</year><volume>8</volume><fpage>1554</fpage><lpage>1565</lpage></citation></ref>
<ref id="b7-sensors-11-03249"><label>7.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kane</surname><given-names>BJ</given-names></name><name><surname>Cutkosky</surname><given-names>MR</given-names></name><name><surname>Kovacs</surname><given-names>GTA</given-names></name></person-group><article-title>A Traction Stress Sensor Array for Use in High-Resolution Robotic Tactile Imaging</article-title><source>J. Microelectromech. Syst</source><year>2000</year><volume>4</volume><fpage>425</fpage><lpage>434</lpage></citation></ref>
<ref id="b8-sensors-11-03249"><label>8.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Leineweber</surname><given-names>M</given-names></name><name><surname>Pelz</surname><given-names>G</given-names></name><name><surname>Schmidt</surname><given-names>M</given-names></name><name><surname>Kappert</surname><given-names>H</given-names></name><name><surname>Zimmer</surname><given-names>G</given-names></name></person-group><article-title>New Tactile Sensor Chip with Silicone Rubber Cover</article-title><source>Sens. Actuat. A</source><year>2000</year><volume>84</volume><fpage>236</fpage><lpage>245</lpage><pub-id pub-id-type="doi">10.1016/S0924-4247(00)00310-1</pub-id></citation></ref>
<ref id="b9-sensors-11-03249"><label>9.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Dahiya</surname><given-names>RS</given-names></name><name><surname>Metta</surname><given-names>G</given-names></name><name><surname>Valle</surname><given-names>M</given-names></name><name><surname>Lorenzelli</surname><given-names>L</given-names></name><name><surname>Adami</surname><given-names>A</given-names></name></person-group><article-title>Piezoelectric Oxide Semiconductor Field Effect Transistor Touch Sensing Devices</article-title><source>Appl. Phys. Lett</source><year>2009</year><volume>95</volume><fpage>034105</fpage><pub-id pub-id-type="doi">10.1063/1.3184579</pub-id></citation></ref>
<ref id="b10-sensors-11-03249"><label>10.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Raibert</surname><given-names>MH</given-names></name><name><surname>Tanner</surname><given-names>JE</given-names></name></person-group><article-title>Design and Implementation of a VLSI Tactile Sensing Computer</article-title><source>Int. J. Robot. Res</source><year>1982</year><volume>3</volume><fpage>3</fpage><lpage>18</lpage></citation></ref>
<ref id="b11-sensors-11-03249"><label>11.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Cannata</surname><given-names>G</given-names></name><name><surname>Maggiali</surname><given-names>M</given-names></name><name><surname>Metta</surname><given-names>G</given-names></name><name><surname>Sandini</surname><given-names>G</given-names></name></person-group><article-title>An Embedded Artificial Skin for Humanoid Robots</article-title><conf-name>Proceedings of the 2008 IEEE International Conference on Multisensor Fusion and Integration for Intelligent Systems</conf-name><conf-loc>Seoul, Korea</conf-loc><conf-date>20–22 August 2008</conf-date><fpage>434</fpage><lpage>438</lpage></citation></ref>
<ref id="b12-sensors-11-03249"><label>12.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Díaz</surname><given-names>J</given-names></name><name><surname>Ros</surname><given-names>E</given-names></name><name><surname>Agís</surname><given-names>R</given-names></name><name><surname>Bernier</surname><given-names>JL</given-names></name></person-group><article-title>Superpipelined High-Performance Optical-Flow Computation Architecture</article-title><source>Comput. Vis. Image Understand</source><year>2008</year><volume>112</volume><fpage>262</fpage><lpage>273</lpage><pub-id pub-id-type="doi">10.1016/j.cviu.2008.05.006</pub-id></citation></ref>
<ref id="b13-sensors-11-03249"><label>13.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Reverter</surname><given-names>F</given-names></name><name><surname>Jordana</surname><given-names>J</given-names></name><name><surname>Gasulla</surname><given-names>M</given-names></name><name><surname>Pallàs-Areny</surname><given-names>R</given-names></name></person-group><article-title>Accuracy and Resolution of Direct Resistive Sensor-to-Microcontroller Interfaces</article-title><source>Sens. Actuat. A</source><year>2005</year><volume>121</volume><fpage>78</fpage><lpage>87</lpage><pub-id pub-id-type="doi">10.1016/j.sna.2005.01.010</pub-id></citation></ref>
<ref id="b14-sensors-11-03249"><label>14.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Oballe-Peinado</surname><given-names>O</given-names></name><name><surname>Castellanos-Ramos</surname><given-names>J</given-names></name><name><surname>Hidalgo-López</surname><given-names>JA</given-names></name><name><surname>Vidal-Verdú</surname><given-names>F</given-names></name></person-group><article-title>Direct Interfaces for Smart Skins Based on FPGAs</article-title><source>Proc SPIE</source><year>2009</year><volume>7365</volume><pub-id pub-id-type="doi">10.1117/12.821642</pub-id></citation></ref>
<ref id="b15-sensors-11-03249"><label>15.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Vidal-Verdú</surname><given-names>F</given-names></name><name><surname>Bravo-Gálvez</surname><given-names>D</given-names></name><name><surname>Oballe-Peinado</surname><given-names>O</given-names></name></person-group><article-title>Tactile Sensor Hardware Based on Programmable SoC</article-title><source>Electr. Lett</source><year>2010</year><volume>16</volume><fpage>1117</fpage><lpage>1118</lpage></citation></ref>
<ref id="b16-sensors-11-03249"><label>16.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Vidal-Verdú</surname><given-names>F</given-names></name><name><surname>Barquero</surname><given-names>MJ</given-names></name><name><surname>Serón</surname><given-names>J</given-names></name><name><surname>García-Cerezo</surname><given-names>A</given-names></name></person-group><article-title>Large Area Smart Tactile Sensor for Rescue Robot</article-title><conf-name>Proceedings of ROSE09: IEEE International Workshop on Robotic and Sensor Environments</conf-name><conf-loc>Lecco, Italy</conf-loc><conf-date>6–7 November 2009</conf-date><fpage>6</fpage><lpage>10</lpage></citation></ref>
<ref id="b17-sensors-11-03249"><label>17.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Yang</surname><given-names>YJ</given-names></name><name><surname>Cheng</surname><given-names>MY</given-names></name><name><surname>Chang</surname><given-names>WY</given-names></name><name><surname>Tsao</surname><given-names>LC</given-names></name><name><surname>Yang</surname><given-names>SA</given-names></name><name><surname>Shih</surname><given-names>WP</given-names></name><name><surname>Chang</surname><given-names>FY</given-names></name><name><surname>Chang</surname><given-names>SH</given-names></name><name><surname>Fan</surname><given-names>KC</given-names></name></person-group><article-title>An Integrated Flexible Temperature and Tactile Sensing Array Using PI-Copper Films</article-title><source>Sens. Actuat. A</source><year>2008</year><volume>143</volume><fpage>143</fpage><lpage>153</lpage><pub-id pub-id-type="doi">10.1016/j.sna.2007.10.077</pub-id></citation></ref>
<ref id="b18-sensors-11-03249"><label>18.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>D’Alessio</surname><given-names>T</given-names></name></person-group><article-title>Measurement Errors in the Scanning of Piezoresistive Sensors Arrays</article-title><source>Sens. Actuat. A</source><year>1999</year><volume>72</volume><fpage>71</fpage><lpage>76</lpage><pub-id pub-id-type="doi">10.1016/S0924-4247(98)00204-0</pub-id></citation></ref>
<ref id="b19-sensors-11-03249"><label>19.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Göger</surname><given-names>D</given-names></name><name><surname>Wörn</surname><given-names>H</given-names></name></person-group><article-title>A Highly Versatile and Robust Tactile Sensing System</article-title><conf-name>Proceedings of the 2007 IEEE International Conference on Sensors</conf-name><conf-loc>Atlanta, GA, USA</conf-loc><conf-date>28–31 October 2007</conf-date><fpage>1056</fpage><lpage>1059</lpage></citation></ref>
<ref id="b20-sensors-11-03249"><label>20.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Castellanos-Ramos</surname><given-names>J</given-names></name><name><surname>Navas-González</surname><given-names>R</given-names></name><name><surname>Macicior</surname><given-names>H</given-names></name><name><surname>Sikora</surname><given-names>T</given-names></name><name><surname>Ochoteco</surname><given-names>E</given-names></name><name><surname>Vidal-Verdú</surname><given-names>F</given-names></name></person-group><article-title>Tactile Sensors Based on Conductive Polymers</article-title><source>Microsyst. Tech</source><year>2010</year><volume>5</volume><fpage>765</fpage><lpage>776</lpage></citation></ref>
<ref id="b21-sensors-11-03249"><label>21.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Díaz</surname><given-names>J</given-names></name><name><surname>Ros</surname><given-names>E</given-names></name><name><surname>Mota</surname><given-names>S</given-names></name><name><surname>Carrillo</surname><given-names>RR</given-names></name></person-group><article-title>Local Image Phase, Energy and Orientation Extraction Using FPGAs</article-title><source>Int. J. Electr</source><year>2008</year><volume>7</volume><fpage>743</fpage><lpage>760</lpage></citation></ref></ref-list>
<sec sec-type="display-objects">
<title>Figures and Table</title>
<fig id="f1-sensors-11-03249" position="float">
<label>Figure 1.</label>
<caption>
<p><bold>(a)</bold> Electronics for piezoresistive tactile sensor that does not cancel crosstalk; <bold>(b)</bold> Tactile image obtained by a slash bar on it.</p></caption>
<graphic xlink:href="sensors-11-03249f1.gif"/></fig>
<fig id="f2-sensors-11-03249" position="float">
<label>Figure 2.</label>
<caption>
<p><bold>(a)</bold> Electronics based on Microcontroller; <bold>(b)</bold> Result of the measurement of a few resistors <italic>vs</italic>. its value taken by a multimeter.</p></caption>
<graphic xlink:href="sensors-11-03249f2.gif"/></fig>
<fig id="f3-sensors-11-03249" position="float">
<label>Figure 3.</label>
<caption>
<p><bold>(a)</bold> Electronics based on PSoC; <bold>(b)</bold> Result of the measurement of a few resistors <italic>vs</italic>. its vaule taken by a multimeter.</p></caption>
<graphic xlink:href="sensors-11-03249f3.gif"/></fig>
<fig id="f4-sensors-11-03249" position="float">
<label>Figure 4.</label>
<caption>
<p>Direct connection with passive integrators.</p></caption>
<graphic xlink:href="sensors-11-03249f4.gif"/></fig>
<fig id="f5-sensors-11-03249" position="float">
<label>Figure 5.</label>
<caption>
<p>Direct interface tactile sensor-FPGA for low-medium size arrays.</p></caption>
<graphic xlink:href="sensors-11-03249f5.gif"/></fig>
<fig id="f6-sensors-11-03249" position="float">
<label>Figure 6.</label>
<caption>
<p>Direct connection with active integrators.</p></caption>
<graphic xlink:href="sensors-11-03249f6.gif"/></fig>
<fig id="f7-sensors-11-03249" position="float">
<label>Figure 7.</label>
<caption>
<p><bold>(a)</bold> Direct interface tactile sensor-FPGA for large arrays; <bold>(b)</bold> Results of the measurement of a few resistors <italic>vs</italic>. its value taken by a multimeter.</p></caption>
<graphic xlink:href="sensors-11-03249f7.gif"/></fig>
<fig id="f8-sensors-11-03249" position="float">
<label>Figure 8.</label>
<caption>
<p>Photograph of the electronics of the prototypes (right) and tactile images obtained from them (left).</p></caption>
<graphic xlink:href="sensors-11-03249f8.gif"/></fig>
<table-wrap id="t1-sensors-11-03249" position="float">
<label>Table 1.</label>
<caption>
<p>Comparison of Different Implementations.</p></caption>
<table frame="box" rules="all">
<thead>
<tr>
<th align="center" valign="middle" rowspan="2"><bold>Hardware based on</bold></th>
<th colspan="3" align="center" valign="middle"><bold>Complexity</bold></th>
<th colspan="2" align="center" valign="middle"><bold>Scanning Time(ms)@Nr of bits of A/D conversion</bold></th>
<th colspan="2" align="center" valign="middle"><bold>Average Power Consumption with/without reading a row</bold></th>
<th align="center" valign="middle" rowspan="2"><bold>Cost of the main IC ($)</bold></th>
<th align="center" valign="middle" rowspan="2"><bold>Hardware Resources</bold></th></tr>
<tr>
<th align="center" valign="middle"><bold>Nr. of ICs</bold></th>
<th align="center" valign="middle"><bold>Nr. of PCB layers</bold></th>
<th align="center" valign="middle"><bold>Size of the array <italic>M</italic> × <italic>N</italic></bold></th>
<th align="center" valign="middle"><bold>Absolute</bold></th>
<th align="center" valign="middle"><bold>Relative to array size</bold></th>
<th align="center" valign="middle"><bold>Absolute</bold></th>
<th align="center" valign="middle"><bold>Relative to array size</bold></th></tr></thead>
<tbody>
<tr>
<td align="center" valign="middle">PIC18F4680 (L)</td>
<td align="center" valign="middle">10</td>
<td align="center" valign="middle">2</td>
<td align="center" valign="middle">16 × 16 (256)</td>
<td align="center" valign="middle">15.6 (10 b)</td>
<td align="center" valign="middle">0.975/row</td>
<td align="center" valign="middle">37 mA@5 V/25 mA@5 V</td>
<td align="center" valign="middle">0.72 mW/tactel</td>
<td align="center" valign="middle" rowspan="2">6.32</td>
<td align="left" valign="middle" rowspan="2">CPU 18PIC@40 MHz, 3.3 Kb SRAM, 64 Kb FLASH, 1 8 × 8 Multiplier ALU, 36 digital I/O, 8.5 mA@I<sub>OL</sub> 0.6 V@V<sub>OL</sub>, 11 input analog A/D channels, Up to 10 bits A/D converter, UART, SPI, I2C, CAN facilities</td></tr>
<tr>
<td align="center" valign="middle">PIC18F4680 (M)</td>
<td align="center" valign="middle">5</td>
<td align="center" valign="middle">2</td>
<td align="center" valign="middle">11 × 19 (201)</td>
<td align="center" valign="middle">10* (10b)</td>
<td align="center" valign="middle">0.515*/row</td>
<td align="center" valign="middle">NA</td>
<td align="center" valign="middle">NA</td></tr>
<tr>
<td align="center" valign="middle">PSoC<break/>CY8C29466</td>
<td align="center" valign="middle">1</td>
<td align="center" valign="middle">2</td>
<td align="center" valign="middle">14 × 4 (56)</td>
<td align="center" valign="middle">31.8 (8 b) 7.2 (7 b) 1.36 (5 b)</td>
<td align="center" valign="middle">2.27/row (8b) 0.51/row (7b) 0.10/row(5b)</td>
<td align="center" valign="middle">37.7 mA@5 V/20 mA @5 V</td>
<td align="center" valign="middle">3.36 mW/tactel</td>
<td align="center" valign="middle">8.02</td>
<td align="left" valign="middle">CPU Core M8C@24 MHz, 2 Kb SRAM, 32 Kb FLASH, 2 8 × 8 Multiplier ALU 24 digital I/O, 12 Analog I @24 mA sink, 4 Analog O @30 mA 12 analog blocks, 8 digital blocks Up to 14 bits A/D converters UART, SPI, I2C facilities</td></tr>
<tr>
<td align="center" valign="middle">FPGA PI<break/>SPARTAN<break/>3AN-50</td>
<td align="center" valign="middle">1</td>
<td align="center" valign="middle">4</td>
<td align="center" valign="middle">8 × 8 (64)</td>
<td align="center" valign="middle">4*(8b)</td>
<td align="center" valign="middle">0.5*/row</td>
<td align="center" valign="middle">NA</td>
<td align="center" valign="middle">NA</td>
<td align="center" valign="middle" rowspan="2">8.94</td>
<td align="left" valign="middle" rowspan="2">50 MHz, 50 K System Gates, 176 Configurable Logic Blocks, 3 18 × 18 dedicated multipliers, 11 Kbits Distributed RAM, 54 Kbits Block RAM, 1 Mbit FLASH, 108 I/O pins @ 24 mA I<sub>OH</sub> V<sub>OH</sub></td></tr>
<tr>
<td align="center" valign="middle">FPGA AI<break/>SPARTAN<break/>3AN-50</td>
<td align="center" valign="middle">5</td>
<td align="center" valign="middle">4</td>
<td align="center" valign="middle">16 × 16 (256)</td>
<td align="center" valign="middle">5.5 (8b)</td>
<td align="center" valign="middle">0.343/row</td>
<td align="center" valign="middle">100 mA@3.3 V/60 mA@3.3 V</td>
<td align="center" valign="middle">1.3 mW/tactel</td></tr></tbody></table></table-wrap></sec></back></article>
